Osc*_*lal 92 django django-templates django-staticfiles
我目前正在将项目中的所有静态文件引用迁移到django 1.5引入的新{%static%}标记,但是我遇到了问题,在某些地方我使用变量来获取内容.使用新标签我不能,有什么方法可以解决这个问题吗?
当前代码:
<img src="{{ STATIC_URL }}/assets/flags/{{ request.LANGUAGE_CODE }}.gif" alt="{% trans 'Language' %}" title="{% trans 'Language' %}" />
Run Code Online (Sandbox Code Playgroud)
它应该是什么(这不起作用):
<img src="{% static 'assets/flags/{{ request.LANGUAGE_CODE }}.gif' %}" alt="{% trans 'Language' %}" title="{% trans 'Language' %}" />
Run Code Online (Sandbox Code Playgroud)
Ber*_*ant 135
您应该能够使用add模板过滤器连接字符串:
{% with 'assets/flags/'|add:request.LANGUAGE_CODE|add:'.gif' as image_static %}
{% static image_static %}
{% endwith %}
Run Code Online (Sandbox Code Playgroud)
您尝试执行的操作不适用于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 %}
Run Code Online (Sandbox Code Playgroud)
小智 22
更简洁的方法是将{%static%}设置为从html开头的变量,这样我们就可以以任何我们想要的方式使用它.
{% load static %}
{% static "" as baseUrl %}
<img src="{{ baseUrl }}/img/{{p.id}}"></img>
Run Code Online (Sandbox Code Playgroud)
ali*_*dil 15
对于它的价值,我认为这是最简单的方法:
<img src="{% static 'assets/flags/'|add:request.LANGUAGE_CODE|add:'.gif' %}" ... >
Run Code Online (Sandbox Code Playgroud)
这是一个古老的问题,我不确定这种方法是否可以在当时完成,但现在,在Django 2.0中,这似乎对我来说很好.
rou*_*nin 14
我通过在静态路径中使用空字符串然后在自己的部分中使用我的变量来实现此功能,如下所示:
<a href= "{% static "" %}{{obj.a}}/{{obj.b}}/{{obj.c}}.gz" >Name</a>
Run Code Online (Sandbox Code Playgroud)
hor*_*bor 11
@rounin,你至少可以使用
{% get_static_prefix %}
Run Code Online (Sandbox Code Playgroud)
在{%load static%}时将加载.这比{%static''%}更自然了:)