2014-09-22 59 views
1

我有其中第二扩展了第一一二Jinja2的模板:包装块

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

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

现在我希望能够插入变量“包装”的在第二个扩展第一个模板的包装器(它扩展了下一个包装器)*的那两个模板之间。一个包装看起来是这样的:

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

我希望它可以导致以下呈现的HTML:

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

不幸的是从上面的包装模板没有Jinja2的有效的,因为块根本就没有像这样工作。那么有什么方法可以在jinja2中做我想做的事情?如果没有:是否有其他模板引擎能够胜任?

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

+0

您需要给块的唯一名称。 – dirn 2014-09-22 13:48:28

+0

我知道。我的问题不是*为什么*这不起作用,而是*我怎么能使它工作。正如问题中已经解释的那样,唯一的名称不是解决方案。 – tobib 2014-09-22 16:01:16

+0

你如何控制可变数量的包装? – dirn 2014-09-22 16:06:07

回答

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

Jinja2 docs

有可能通过调用超级渲染父块的内容。这给出了父块的结果:

+0

这确实有效。但延伸方向与我预期的方向相反:包装处于最顶端。 – tobib 2014-09-24 19:01:50

0

你需要给你的块是唯一的名称。您的问题显然是由于content区块的两次使用造成的。