django 1.5 – 如何在静态标签中使用variables

我目前正在将我项目中的所有静态文件引用迁移到django 1.5引入的新的{%static%}标记中,但是我遇到了问题,有些地方我使用variables来获取内容。 有了新的标签,我不能,有没有办法解决这个问题?

当前代码:

<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' %}" /> 

您应该能够使用add模板filter来连接string:

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

你正在做什么不能用static模板标签,因为它只需要一个string或一个variables:

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

一个更简洁的方法是将{%static%}设置为一个从html开始的variables,以便我们可以以任何我们想要的方式使用它。

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

我得到了这个工作,通过使用一个空的string的静态path,然后在自己的部分使用我的variables,如下所示:

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

@rounin,至less可以使用

 {% get_static_prefix %} 

当你{%load static%}时会被加载。 这只是更自然然后{%static''%} 🙂