在django模板中的标签内标记

时间:2014-06-04 11:16:13

标签: python django django-templates

我正在尝试执行以下操作:

{% include "default_form.html" with action="{% url 'settings' var1 var2 %}" %}

但它似乎不受支持,因为我收到以下错误:

Could not parse the remainder: '"{%' from '"{%'

有没有办法在模板中实现这一点,还是我需要在视图中定义action

2 个答案:

答案 0 :(得分:17)

最简单的解决方案是:

{% url 'settings' var1 var2 as action_url %}

{% include "default_form.html" with action=action_url %}

答案 1 :(得分:5)

你不能这样做:

{% include "default_form.html" with action="{% url 'settings' var1 var2 %}" %}

您只能使用{% ... %}一次,然后在里面使用标签,变量等...例如,如果你在一个名为 url_with_vars 的变量里面,你应该这样做:

{% url 'settings' var1 var2 as url_with_vars %}

{% include "default_form.html" with action=url_with_vars %}

提示:在{% .... %}内,您可以调用django变量而不使用{{..}},这意味着在模板中显示django变量时使用{{variable}}但是在{% whatever_action ... %}内你不喜欢 {% whatever_action {{variable}} %},正确的方式是{% whatever_action variable %}

但是你会意识到将var的url值赋给变量还有其他问题。

如果您尝试在表单中添加action="{% url 'settings' var1 var2 %}" %},我强烈建议您执行以下操作:

<form action="{% url 'settings' var1 var2 %}">
    {% include "default_form.html" %}
</form>

我在这部分中想说的是,在模板中使用表单声明以及子模板中表单内的值会更容易,因为它太难了做你想做的事