如何在jinja2中包装一个块

2 投票
1 回答
3542 浏览
提问于 2025-04-16 17:59

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

{% 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 %}

撰写回答