在我的Django模板中,我需要将名称url的值分配给with块中的变量,以便我可以在多个位置使用它。
我需要实现这样的目标:
{% for tag in post.tags.all %}
{% with tagabs={%url showtag tag%} %}
<li><a href="{{tagabs}}">#{{tag}}</a></li>
{% endwith %}
{% endfor %}
但显然这不起作用,最终会出现解析错误。上面的示例是一个简单的场景,我可以使用{%url showtag tag%}而不是{{tagabs}}并删除with块。但在我的场景中,我需要在几个地方和if语句中使用tagabs值进行比较。
感谢您的帮助。
答案 0 :(得分:38)
如果要素是核心,为什么要创建新的模板标记/过滤器?
查看样本:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#url
{% url 'path.to.view' arg arg2 as the_url %}
<a href="{{ the_url }}">I'm linking to {{ the_url }}</a>
和
{% url 'path.to.view' as the_url %}
{% if the_url %}
<a href="{{ the_url }}">Link to optional stuff</a>
{% endif %}
答案 1 :(得分:-4)
我认为您必须创建自己的template tag来管理此问题,或者在视图中创建必要的数据并将其传递给模板。
根据您正在尝试做的事情,可能including另一个模板并发送您定义的变量可以做到,但我对此表示怀疑。
Djangos模板系统背后的想法是使模板中没有太多逻辑。因此,它要么准备好在视图中输出所需的数据,要么制作模板标签。