我刚开始使用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实现这一目标?
发布于 2014-03-09 13:16:41
您将include语句与模板继承混淆在一起。include语句对于包含一个模板并将该文件的呈现内容返回到当前命名空间(来自Jinja2文档)非常有用。您的“子”模板在包含它时已经呈现,因此它无法更改父模板中的值。
您需要使用模板继承。
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 %}来自Jinja2文档:
{% extends %}标记是这里的关键。它告诉模板引擎,这个模板“扩展”了另一个模板。当模板系统评估此模板时,首先它会定位父模板。扩展标记应该是模板中的第一个标记。在打印之前的每件事都是正常的,可能会引起混乱。
https://stackoverflow.com/questions/22282521
复制相似问题