Я использую reportlab pdfgen для создания PDF. В PDF есть изображение, созданное drawImage
. Для этого мне нужен либо URL-адрес изображения, либо путь к изображению в представлении. Мне удалось создать URL, но как мне получить локальный путь к изображению?
Как я получу URL:
prefix = 'https://' if request.is_secure() else 'http://'
image_url = prefix + request.get_host() + STATIC_URL + "images/logo_80.png"
request.build_absolute_uri
как описано здесь: stackoverflow.com/questions/2345708/…from django.templatetags.static import static
вместо этого.Ответ dyve хороший, однако, если вы используете «кэшированное хранилище» в своем проекте django, и окончательные пути статических файлов по URL должны быть «хешированы» (например, style.aaddd9d8d8d7.css из style.css ), тогда вы не могу получить точный URL с
django.templatetags.static.static()
. Вместо этого вы должны использовать шаблон тега from,django.contrib.staticfiles
чтобы получить хешированный URL.Кроме того, в случае использования сервера разработки этот метод тега шаблона возвращает нехэшированный URL, поэтому вы можете использовать этот код независимо от того, на каком хосте он находится в разработке или производстве! :)
источник
вот другой способ! (проверено на Django 1.6)
источник
staticfiles_storage.url(path, force=True)
Используйте
static
тег по умолчанию :Есть еще один тег
django.contrib.staticfiles.templatetags.staticfiles
(как в принятом ответе), но он не рекомендуется в Django 2.0+.источник
С Django 3.0 вы должны использовать
from django.templatetags.static import static
:источник
Ответ @ dyve не работал для меня на сервере разработки. Вместо этого я решил это с
find
. Вот функция:источник
Если вы хотите получить абсолютный URL (включая протокол, хост и порт), вы можете использовать
request.build_absolute_uri
функцию, показанную ниже:источник