在jinja2中包裹块

时间:2014-09-22 13:15:11

标签: flask jinja2

我有两个jinja2模板,第二个扩展第一个:

<h1>Some title</h1>
{% block content %}
{% endblock %}

{% block content %}
  content
{% endblock %}

现在我希望能够插入一个可变数量的&#34;包装&#34;在这两个模板之间,第二个模板扩展了包装器(扩展了下一个包装器)*,它扩展了第一个模板。包装器可能如下所示:

{% block content %}
  <div class="wrapper">
    {% block content %}
    {% endblock %}
  </div>
{% endblock %}

我希望这会导致以下呈现的HTML:

<h1>Some title</h1>
<div class="wrapper">
  content
</div>

不幸的是,上面的包装模板在jinja2中无效,因为块不会像这样工作。那么有没有办法在jinja2做我想做的事情?如果不是:是否有其他模板引擎能够使用它?

(请注意,重命名内部块不会,因为我需要能够添加变量数量的包装器。)

2 个答案:

答案 0 :(得分:0)

您需要为您的块提供唯一的名称。您的问题显然是content阻止两次使用的结果。

答案 1 :(得分:0)

{% block content %}
  <div class="wrapper">
    {{ super() }}
  </div>
{% endblock %}

来自Jinja2 docs

  

可以通过调用super来呈现父块的内容。这会返回父块的结果: