python - 如何在 jinja2 模板中重复一个 block ?

标签 python templates jinja2

我正在使用 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/

相关文章:

regex - 在 Ansible 中,如何在使用过滤器的变量定义中使用变量

python pytest 用于测试请求和响应

c++ - 构造函数中的通用引用导致失败,无法将可调用仿函数分配给 std::function

c++ - 我如何获得指向已推导的模板函数的指针?

python - 在没有 Flask 上下文的情况下渲染 jinja2 模板

google-app-engine - jinja2 模板继承示例不起作用

python - 具有增长率的 Pandas cumsum

带有重复/重复元素的 Python "set"

python - 使用 Facebook Prophet 在具有多个时间序列的数据框中进行时间序列预测

python - 将 boost::python::object 转换为(非常量)左值