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_uri
como se describe aquí: stackoverflow.com/questions/2345708/…from django.templatetags.static import static
lugar.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.staticfiles
para 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
static
etiqueta 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_uri
función que se muestra a continuación:fuente