Jinja2继承与块和包含

时间:2012-02-12 01:43:12

标签: python pyramid jinja2

我无法弄清楚如何使用Jinja2修改包含模板中的块。这是我使用三个文件的示例。

base.html文件:

<html>{% include "content.html" %}</html>

content.html:

<h1>{% block title %}Title{% endblock title%}</h1>
<div>{% block content_body %}Content Body{% endblock content_body%}</div>

story.html

{% extends "base.html" %}
{% block title %}story.title{% endblock title %}
{% block content_body %}story.description{% endblock content_body %}

在渲染story.html时,我会得到:

<html>
<h1>Title</h1>
<div>Content Body</div>
</html>

如何使用预期值进行渲染?

1 个答案:

答案 0 :(得分:13)

base.html未呈现,因为它未被任何模板调用。您可以做的是第二级扩展:

base.html文件:

<html>{% block html %}{% endblock %}</html>

content.html:

{% extends "base.html" %}
{% block html %}
<h1>{% block title %}Title{% endblock title%}</h1>
<div>{% block content_body %}Content Body{% endblock content_body%}</div>
{% endblock %}

尽管如此,这可能是矫枉过正,您可能会发现单个基本模板就足够了(即将base.htmlcontent.html合并到一个模板中。)