如何在jinja2中包装一个块
我基本上想在我的基础模板中做这样的事情:
{% if the block 'headline' is not empty %}
<div class="something"><h1>{% block headline %}{% end block %}</h1></div>
{% endif %}
在jinja2中,块(blocks)看起来并不是变量,你不能获取它们的内容或者测试它们的值,除了输出它们之外,什么都做不了。
这似乎是个很简单的事情,但我找不到办法。难道我必须用宏(macros)来代替块吗?
1 个回答
4
你可以使用 self.blockname
这种写法来查看一个代码块的内容。
{% if self.headline() is not empty %}
{# Write out Headline HTML wrapper here #}
{% endif %}
引用一下文档中的内容:
如果你想多次打印一个代码块,可以使用这个特殊的 self 变量,并用那个名字来调用这个代码块:
<title>{% block title %}{% endblock %}</title>
<h1>{{ self.title() }}</h1>
{% block body %}{% endblock %}