2011-05-19 29 views
2

我基本上想要做這樣的事情在我的基本模板:我如何包裝中的Jinja2塊

{% if the block 'headline' is not empty %} 
<div class="something"><h1>{% block headline %}{% end block %}</h1></div> 
{% endif %} 

在Jinja2的看來塊不變量,你不能在他們的內容或測試獲得他們的價值觀,或其他任何東西,但輸出它們

這似乎是允許這件事情的一件不容易的事情,但我無法想出一個辦法。我必須使用宏而不是塊嗎?

回答

4

您應該可以使用self.blockname語法檢查塊的內容。

{% if self.headline() is not empty %} 
{# Write out Headline HTML wrapper here #} 
{% endif %} 

the documentation引用:

如果要多次打印一個塊,但是你可以使用特殊的自變量,並與該名調用該塊:

<title>{% block title %}{% endblock %}</title> 
<h1>{{ self.title() }}</h1> 
{% block body %}{% endblock %} 
+2

如果已經提供了content_title,我已經使用它在管理頁面標題中添加管道:' {%block content_title%} {%endblock%} {%if self.content_title()%} {%endif%} {{SITENAME}}'。希望這可以讓我們更清楚地在if語句中使用它。 – Treffynnon 2012-09-19 13:01:27

+0

@Treffynnon這正是我爲了弄清楚如何去做的事。謝謝! – vergenzt 2013-05-13 05:42:46