Django 1.5 - Как использовать переменные внутри статического тега

В настоящее время я переношу все ссылки на статические файлы в свой проект на новый тег {% static%}, введенный django 1.5, но у меня проблема, в некоторых местах я использую переменные для получения содержимого. С новым тегом я не могу, есть ли способ решить это?

Текущий код:

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

Что это должно быть (это не работает):

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

Ответ 1

Вы должны уметь конкатенировать строки с помощью add фильтра шаблонов:

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

То, что вы пытаетесь сделать, не работает с тегом шаблона static, потому что он принимает только строку или переменную:

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

Ответ 2

более чистый способ - установить {% static%} в качестве переменной с начала html, чтобы мы могли использовать ее любым способом.

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

Ответ 3

Я получил это для работы, используя пустую строку для статического пути, а затем используя мои переменные в своем собственном разделе, например:

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

Ответ 4

@rounin, вы можете, по крайней мере, использовать

{% get_static_prefix %} 

который будет загружен, когда вы {% load static%}. Это более естественно, чем {% static ''%}:)