django {%url%}为{%include%}

时间:2019-02-12 21:12:11

标签: django django-templates

当我尝试渲染此模板时:

{% include "mylistitem.html" with text="foo" btn_text="bar" href="{% url 'register' %}" %}

它会产生以下错误:

  

TemplateSyntaxError:无法解析其余部分:“” {%”中的“” {%'

在文档中我找不到任何地方无法嵌套表达式。 我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以使用两个步骤,而不是一步一步完成操作:

{% url 'register' as some_var %}
{% include "mylistitem.html" with text="foo" btn_text="bar" href=some_var %}

因此,我们在这里首先将{% url ... %}模板标签的结果分配给变量(此处称为some_var),然后使用该变量调用{% include ... %}

此行为记录在documentation on the url template tag中:

  

(...)

     

如果您想在不显示URL的情况下获取URL ,则可以使用   通话略有不同:

{% url 'some-url-name' arg arg2 as the_url %}
<a href="{{ the_url }}">I'm linking to {{ the_url }}</a>

答案 1 :(得分:1)

我不认为您可以嵌套模板标签。

解决当前问题的方法是:

{% url 'register' as register_url %}
{% include "mylistitem.html" with text="foo" btn_text="bar" href=register_url  %}

这是一个重复的问题:Nested Django tags