urls template django django-views django-staticfiles

template - href django



Django obtiene la URL de archivos estáticos a la vista (3)

Estoy usando reportlab pdfgen para crear un PDF. En el PDF hay una imagen creada por drawImage . Para esto, o bien necesito la URL para 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"


¡aquí hay otra manera! (probado en Django 1.6)

from django.contrib.staticfiles.storage import staticfiles_storage staticfiles_storage.url(path)


Dado que este es el resultado principal en Google, pensé que agregaría otra forma de hacerlo. Personalmente prefiero este, ya que deja la implementación al marco de Django.

# Original answer said: # from django.templatetags.static import static # Improved answer (thanks @Kenial, see below) from django.contrib.staticfiles.templatetags.staticfiles import static url = static(''x.jpg'') # url now contains ''/static/x.jpg'', assuming a static path of ''/static/''


La respuesta de Dyve es buena, sin embargo, si está utilizando "almacenamiento en caché" en su proyecto django y las rutas url finales de los archivos estáticos deberían obtener "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 una etiqueta de plantilla de django.contrib.staticfiles para obtener la url de hash.

Además, en caso de utilizar el servidor de desarrollo, este método de etiqueta de plantilla devuelve url no hash, por lo que puede usar este código independientemente de que el host sea el desarrollo o la producción. :)

from django.contrib.staticfiles.templatetags.staticfiles import static # ''css/style.css'' file should exist in static path. otherwise, error will occur url = static(''css/style.css'')