Django模板中标签嵌套标签
我想做类似下面这样的事情:
{% 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 %}