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 ''%}:)