从包含的子模板中填充一个父模板块

时间:2014-03-09 13:04:50

标签: python jinja2

我刚刚开始使用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实现这个目标?

1 个答案:

答案 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 %}

来自the Jinja2 docs

  

{% extends %}标记是此处的关键。它告诉模板   此模板“扩展”另一个模板的引擎。当。。。的时候   模板系统评估此模板,首先它找到父模板。   extends标记应该是模板中的第一个标记。一切   在正常打印之前可能会引起混淆。

相关问题