我刚刚开始使用jinja2模板库。我无法弄清楚如何从包含的子模板填充父模板块中的内容。 例如,我有一个父模板 -
T-1:
<div id="includedTemplateName>
{% block includedTemplateName %}{% endblock %}
</div>
<div id="content">
{% include 't-2.htm' %}
</div>
和子模板
T-2:
<div>
conten
</div>
{% block includedTemplateName %}t-2{% endblock %}
我希望id为includedTemplateName
的div中的值为t-2中定义的't-2'。
我怎样才能用jinja2实现这个目标?
答案 0 :(得分:2)
您将include
语句与模板继承混淆。 include语句用于包含模板并将该文件的呈现内容返回到当前名称空间(来自Jinja2 docs)。您的“子”模板在包含时已经呈现,因此无法更改父级中的值。
您需要使用template inheritance。
t1.html
:
<div id="includedTemplateName">
{% block includedTemplateName %}{% endblock %}
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
t2.html
:
{% extends "t1.html" %}
{% block includedTemplateName %}t-2{% endblock %}
{% block content %}content{% endblock %}
{% extends %}
标记是此处的关键。它告诉模板 此模板“扩展”另一个模板的引擎。当。。。的时候 模板系统评估此模板,首先它找到父模板。 extends标记应该是模板中的第一个标记。一切 在正常打印之前可能会引起混淆。