2014-09-22 30 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區塊的兩次使用造成的。