如何在jinja2中包含一个块

时间:2011-05-19 18:09:10

标签: python django jinja2

我基本上想在我的基本模板中做这样的事情:

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

在jinja2中,看起来块不是变量,你无法获取它们的内容或测试它们的值,或者除了输出它们之外的任何其他内容。

这似乎很容易实现这一点,但我无法想出办法。我是否必须使用宏而不是块?

1 个答案:

答案 0 :(得分: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 %}