Django 1.5-如何在静态标记中使用变量

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

目前代码:

<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' %}" />
55354 次浏览

您应该能够连接字符串与 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 %}

我使用一个空字符串作为静态路径,然后在它们自己的部分中使用我的变量,像这样:

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

@ rounin,你至少可以

{% get_static_prefix %}

它将在{% load static% }时加载。这比{% static“% } :)更自然

更简洁的方法是从 html 的开始将{% static% }设置为变量,这样我们就可以以任何方式使用它。

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

无论如何,我认为这是最简单的方法:

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

这是一个老问题,我不确定这个方法在当时是否可以实现,但是现在,在 Django 2.0中,这似乎对我很有用。