【问题标题】:How to repeat a block in a jinja2 template?如何在 jinja2 模板中重复一个块?
【发布时间】:2014-01-22 15:12:17
【问题描述】:

我使用Jinja2 作为通过 Python 脚本生成的静态 HTML 站点的模板引擎。

我想在布局模板中重复一个块的内容,如下所示:

<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 %} 解释为块重定义。

如何使用 jinja2 在同一个模板中重复块的内容?

【问题讨论】:

    标签: python templates jinja2


    【解决方案1】:

    使用special self variable 按名称访问块:

    <title>{% block title %}{% endblock %} - {{ sitename }}</title>
    <!-- ... snip ... -->
    <h1>{{ self.title() }}</h1>
    

    【讨论】:

      猜你喜欢
      • 2021-08-03
      • 1970-01-01
      • 2013-01-20
      • 2018-01-30
      • 1970-01-01
      • 2010-10-05
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多