Estoy usando reportlab pdfgen para crear un PDF. En el PDF hay una imagen creada por drawImage. Para esto, necesito la URL de una imagen o la ruta a una imagen en la vista. Logré construir la URL, pero ¿cómo obtendría la ruta local a la imagen?
Cómo obtengo la URL:
prefix = 'https://' if request.is_secure() else 'http://'
image_url = prefix + request.get_host() + STATIC_URL + "images/logo_80.png"

request.build_absolute_uricomo se describe aquí: stackoverflow.com/questions/2345708/…from django.templatetags.static import staticlugar.la respuesta de dyve es buena, sin embargo, si está utilizando "almacenamiento en caché" en su proyecto django y las rutas de URL finales de los archivos estáticos deberían ser "hash" (como style.aaddd9d8d8d7.css de style.css ), entonces usted no se puede obtener una url precisa con
django.templatetags.static.static(). En su lugar, debe usar la etiqueta de plantilla dedjango.contrib.staticfilespara obtener la URL hash.Además, en el caso de usar un servidor de desarrollo, este método de etiqueta de plantilla devuelve una URL sin hash, por lo que puede usar este código independientemente de que el host sea de desarrollo o producción. :)
fuente
¡Aquí hay otra manera! (probado en Django 1.6)
fuente
staticfiles_storage.url(path, force=True)Use la
staticetiqueta predeterminada :Hay otra etiqueta en
django.contrib.staticfiles.templatetags.staticfiles(como en la respuesta aceptada), pero está en desuso en Django 2.0+.fuente
Desde Django 3.0 deberías usar
from django.templatetags.static import static:fuente
La respuesta de @ dyve no me funcionó en el servidor de desarrollo. En cambio lo resolví con
find. Aquí está la función:fuente
Si desea obtener la URL absoluta (incluido el protocolo, el host y el puerto), puede usar la
request.build_absolute_urifunción que se muestra a continuación:fuente