django 1.5 - How to use variables inside static tag

Oscar Carballal picture Oscar Carballal · May 20, 2013 · Viewed 44.6k times · Source

I'm currently migrating all the static files references in my project to the new {% static %} tag that django 1.5 introduced, but I'm having a problem, in some places I use variables to get the content. With the new tag I can't, is there any way to solve this?

Current code:

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

What it should be (this doesn't work):

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

Answer

Bernhard Vallant picture Bernhard Vallant · May 20, 2013

You should be able to concatenate strings with the add template filter:

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

What you are trying to do doesn't work with the static template tag because it takes either a string or a variable only:

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