Django: получить URL-адрес ImageField в поле зрения

Я пытаюсь получить абсолютный путь ImageField в представлении Django, чтобы я мог открыть изображение, написать на нем что-то, а затем передать его пользователю.

У меня проблема с получением абсолютного пути к изображению, которое сохраняется в папке мультимедиа.

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

Я получаю сообщение об ошибке, что item.image не имеет пути (The 'banner' attribute has no file associated with it.). item.image - это ImageField, и я хотел бы знать, как получить абсолютный путь к изображению, сохраненному в поле изображения (в представлении Django).


person Byteme    schedule 02.04.2013    source источник


Ответы (3)


При правильной настройке используйте .url: item.image.url. Ознакомьтесь с документацией здесь.

person okm    schedule 02.04.2013
comment
Я пытался использовать .url, но он не работает. Он работает в шаблонах, но не в представлении:/ - person Byteme; 02.04.2013
comment
Может быть, это вызвано тем, что я расширил ImageField до BannerField... но все, что я сделал, это перезаписал чистый метод. - person Byteme; 02.04.2013
comment
@ user2225675 Как вы управляете файлами изображений? Кажется, item.image отсутствует соответствующий файл. Возможно, это было вызвано неправильной настройкой загрузки или вы пробуете разные элементы в шаблоне и представлении? - person okm; 02.04.2013
comment
Это тот же элемент в шаблоне и представлении... в шаблоне он отображается без проблем. Что вы подразумеваете под файлами изображений mnge? - person Byteme; 02.04.2013

Может так?

@property
def get_absolute_image_url(self):
    return "{0}{1}".format(settings.MEDIA_URL, self.image.url)

см. Как я могу получить список абсолютных URL-адресов изображений из Django QuerySet?

person Peter Rosemann    schedule 02.04.2013
comment
Тем временем вы можете найти соответствующий пример в документации Django здесь: docs.djangoproject.com/en/dev/ref/models/fields/ - person Peter Rosemann; 09.07.2019

Я только что понял, в чем проблема... абсолютный путь к изображению сохраняется в файловой переменной.

Пример (в поле зрения):

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