【问题标题】:Tag inside tag in django templatedjango模板中的标签内标签
【发布时间】:2014-07-25 00:24:25
【问题描述】:
我正在尝试执行以下操作:
{% include "default_form.html" with action="{% url 'settings' var1 var2 %}" %}
但似乎不支持,因为我收到以下错误:
Could not parse the remainder: '"{%' from '"{%'
有什么方法可以在模板中实现这一点,还是我需要在我的视图中定义action?
【问题讨论】:
标签:
python
django
django-templates
【解决方案1】:
你不能这样做:
{% 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 %}
但是随后您会意识到将带有 vars 的 url 值分配给变量还有其他问题。
如果您尝试将 action="{% url 'settings' var1 var2 %}" %} 添加到表单中,我强烈建议您执行以下操作:
<form action="{% url 'settings' var1 var2 %}">
{% include "default_form.html" %}
</form>
在这部分我想说的是,在模板中拥有表单声明以及在子模板中拥有表单内的值会容易得多,因为这样做太难了你想做什么
【解决方案2】:
最简单的解决方案是:
{% url 'settings' var1 var2 as action_url %}
{% include "default_form.html" with action=action_url %}