2013-04-02 22 views
19

Próbuję uzyskać absolutną ścieżkę ImageField w widoku Django, dzięki czemu mogę otworzyć obraz, napisać na nim coś, a następnie udostępnić go użytkownikowi.Django: Zdobądź adres URL ImageFielda w widoku

Mam problem z uzyskaniem absolutnej ścieżki do obrazu zapisanego w folderze multimediów.

item = get_object_or_404(Item, pk=pk) 
absolute_url = settings.MEDIA_ROOT + str(item.image.path) 

dostaję błąd, że item.image nie posiada ścieżkę (The 'banner' attribute has no file associated with it.). item.image to ImageField i chciałbym wiedzieć, jak uzyskać absolutną ścieżkę obrazu zapisanego w polu obrazu (w widoku Django).

Odpowiedz

28

Po skonfigurowaniu poprawnie użyj .url: item.image.url. Sprawdź dokumenty here.

+3

Próbowałem za pomocą .url ale to nie działa .. to działa w szablonach, ale nie w widoku:/ – Byteme

+0

Może to spowodowane faktem, że hve rozszerzonego ImageField do BannerField ... ale wszystko, co zrobiłem, jest nadpisaną czystą metodą. – Byteme

+0

@ user2225675 Jak zarządzać plikami obrazów? Wydaje się, że 'item.image' brakuje jego względnego pliku. Być może było to spowodowane błędną konfiguracją przesyłania lub próbujesz różnych elementów w szablonie i widoku? – okm

2

prostu zorientowali się, w czym problem ... ścieżka bezwzględna obraz jest zapisywany w zmiennej plików.

Przykład (w świetle):

item = Item.objects.get(pk=1) 
print item.file # prints out full path of image (saved in media folder)