Python 带块和包含的Jinja2继承

Python 带块和包含的Jinja2继承,python,pyramid,jinja2,Python,Pyramid,Jinja2,我不知道如何使用Jinja2修改包含模板中的块。下面是一个示例,其中我使用了三个文件 base.html: <html>{% include "content.html" %}</html> <html>{% block html %}{% endblock %}</html> 渲染story.html时,我将获得: <html> <h1>Title</h1> <div>Content Body&

我不知道如何使用Jinja2修改包含模板中的块。下面是一个示例,其中我使用了三个文件

base.html:

<html>{% include "content.html" %}</html>
<html>{% block html %}{% endblock %}</html>
渲染story.html时,我将获得:

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

标题
内容体

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

base.html
不会被渲染,因为任何模板都不会调用它。您可以做的是第二级扩展:

base.html:

<html>{% include "content.html" %}</html>
<html>{% block html %}{% endblock %}</html>
{%block html%}{%endblock%}
content.html:

<h1>{% block title %}Title{% endblock title%}</h1>
<div>{% block content_body %}Content Body{% endblock content_body%}</div>
{% extends "base.html" %}
{% block html %}
<h1>{% block title %}Title{% endblock title%}</h1>
<div>{% block content_body %}Content Body{% endblock content_body%}</div>
{% endblock %}
{%extends“base.html”%}
{%block html%}
{%block title%}标题{%endblock title%}
{%block content\u body%}内容正文{%endblock content\u body%}
{%endblock%}

不过,这可能有些过分,您可能会发现一个基本模板就足够了(即将
base.html
content.html
组合到一个模板中)。

这是模板的正确解决方案检查django模板他们做了类似的事情来理解这个概念。您应该看看Jinja2中的宏。我认为这与您的查询有关。当您需要@ArminRonacher时,@ArminRonacher在哪里?我感觉这是由
include“content.html”引起的
覆盖
story
中同名块的内容,即使
story
正在覆盖
base
——但我在文档中没有看到任何东西表明这是预期的。