Django模板中标签嵌套标签

18 投票
3 回答
8924 浏览
提问于 2025-04-18 08:33

我想做类似下面这样的事情:

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

但是似乎不支持,因为我遇到了以下错误:

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

有没有办法在模板中实现这个,还是说我需要在我的视图里定义一下 action 呢?

3 个回答

0

对于使用 {{}}{%%} 中加载静态文件的访问者:

<link rel="stylesheet" type="text/css" href="{% static 'css/theme/{{ theme }}.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'css/theme/' %}{{theme}}.css" />
10

你不能这样做:

{% 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 %}

不过,你会发现还有其他问题,比如如何把带变量的 URL 值赋给一个变量。

如果你想在表单中添加 action="{% url 'settings' var1 var2 %}" %},我强烈建议你这样做:

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

我想说的是,把表单的声明放在模板中,而把表单里的值放在子模板里会简单很多,因为你现在尝试做的事情会很难。

35

最简单的解决办法是:

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

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

撰写回答