我只是想通了,如果你使用with
包含子模板,变量将在基本模板中可用。很容易重现:
Test: {{ test }}
{% include "tpl.txt" with test="passed" %}
Test: {{ test }}
输出:
Test:
Test: passed
这是一个错误吗?
UPD。我必须说tpl.txt
内有take_context=True
的包含标记。此包含标记也是这样做的:
@register.inclusion_tag('my_tag.txt', takes_context=True)
def my_tag(context):
context.update({'new': 'key'})
return context
如果您没有update
上下文,或者context['new'] = 'key'
它没有按预期工作。如果您执行update
- 您使用{% include %}
传递给with
的所有变量都会在模板中稍后提供。仍然有点奇怪,因为变量在父模板中可用,并且没有更新的密钥(“新”)可用,但{% include %}
变量。问题是本地化的。