Pregunta django 1.5 - Cómo usar variables dentro de la etiqueta estática


Actualmente estoy migrando todas las referencias de archivos estáticos en mi proyecto a la nueva etiqueta {% static%} que django 1.5 introdujo, pero estoy teniendo un problema, en algunos lugares utilizo variables para obtener el contenido. Con la nueva etiqueta no puedo, ¿hay alguna manera de resolver esto?

Código actual:

<img src="{{ STATIC_URL }}/assets/flags/{{ request.LANGUAGE_CODE }}.gif" alt="{% trans 'Language' %}" title="{% trans 'Language' %}" />

Lo que debería ser (esto no funciona):

<img src="{% static 'assets/flags/{{ request.LANGUAGE_CODE }}.gif' %}" alt="{% trans 'Language' %}" title="{% trans 'Language' %}" />

75
2018-05-20 18:24


origen


Respuestas:


Debería poder concatenar cadenas con el add filtro de plantilla:

{% with 'assets/flags/'|add:request.LANGUAGE_CODE|add:'.gif' as image_static %}
  {% static image_static %}
{% endwith %}

Lo que estás tratando de hacer no funciona con static etiqueta de plantilla porque solo toma una cadena o una variable:

{% static "myapp/css/base.css" %}
{% static variable_with_path %}
{% static "myapp/css/base.css" as admin_base_css %}
{% static variable_with_path as varname %}

114
2018-05-20 18:45



una forma más limpia es establecer {% static%} como una variable desde el comienzo del html para que podamos usarlo de la manera que queramos.

{% load static %}
{% static "" as baseUrl %}
<img src="{{ baseUrl }}/img/{{p.id}}"></img>

18
2018-03-03 03:37



Lo hice funcionar al usar una cadena vacía para la ruta estática y luego usar mis variables en su propia sección, como esta:

<a href= "{% static "" %}{{obj.a}}/{{obj.b}}/{{obj.c}}.gz" >Name</a>

10
2018-03-13 07:47



@rounin, puedes, al menos, usar

{% get_static_prefix %} 

que se cargará cuando {% load static%}. Es más natural que {% static ''%} :)


10
2018-05-18 18:21



Por lo que vale, creo que esta es la manera más fácil:

<img src="{% static 'assets/flags/'|add:request.LANGUAGE_CODE|add:'.gif' %}" ... >

Esta es una vieja pregunta y no estoy seguro de si este método podría hacerse en ese momento, pero ahora, en Django 2.0 esto parece funcionar bien para mí.


1
2018-03-28 04:45