我正在使用 Jinja2作为通过 Python 脚本生成的静态 HTML 站点的模板引擎。
我想在布局模板中重复一个 block 的内容,如下所示:
<html>
<head>
<title>{% block title %}{% endblock %} - {{ sitename }}</title>
</head>
<body>
<h1>{% block title %}{% endblock %}</h1>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
此模板将在页面模板中扩展,如下所示:
{% extends "layout.html" %}
{% block title %}Page title{% endblock %}
{% block content %}
Here goes the content
{% endblock %}
但是,这并没有按我的预期工作,导致错误:
jinja2.exceptions.TemplateAssertionError: block 'title' defined twice
Jinja 将 layout.html 中的第二个 {% block title %}
解释为 block 重定义。
如何使用 jinja2 在同一个模板中重复 block 的内容?
最佳答案
使用 special self
variable按名称访问 block :
<title>{% block title %}{% endblock %} - {{ sitename }}</title>
<!-- ... snip ... -->
<h1>{{ self.title() }}</h1>
关于python - 如何在 jinja2 模板中重复一个 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20929241/