我创建了一个自定义inclusion template tag,它接受一个Update
模型对象。
模板标记:
@register.inclusion_tag('update_line.html')
def update_line(update):
return {'update': update}
update_line.html :
<tr><td class="update">{{ update }}</td><td class="ack">
<img id="update-{{ update.pk }}" class="ack-img" src="{{ STATIC_URL }}img/acknowledge.png" alt="Acknowledge" /></td></tr>
问题是我的包含模板标记模板中没有{{ STATIC_URL }}
,即使我使用django.core.context_processors.static
上下文处理器,因此{{ STATIC_URL }}
可用于我的所有“正常”未通过包含模板标记处理的模板。
有没有办法可以从我的包含模板标签模板中获取STATIC_URL
而不做一些令人讨厌的事情,比如手动从设置中获取并明确地将其作为上下文变量传递?
答案 0 :(得分:14)
好。在发布问题之后刚想出来:
我没有在包含模板中使用{{ STATIC_URL }}
,而是使用get_static_prefix
模板标记中的static
标记:
<强> update_line.html 强>:
{% load static %}
<tr><td class="update">{{ update }}</td><td class="ack">
<img id="update-{{ update.pk }}" class="ack-img" src="{% get_static_prefix %}img/acknowledge.png" alt="Acknowledge" /></td></tr>
我相信现在正确的方法(django 1.5+)是:
<强> update_line.html 强>:
{% load staticfiles %}
<tr><td class="update">{{ update }}</td><td class="ack">
<img id="update-{{ update.pk }}" class="ack-img" src="{% static 'my_app/img/acknowledge.png' %}" alt="Acknowledge" /></td></tr>
答案 1 :(得分:2)
在模板标记代码中,您可以执行您喜欢的操作:因此您可以自己轻松地从STATIC_URL
导入settings
。