如何在 jinja2 中包装一个块

发布于 2024-11-08 11:54:42 字数 309 浏览 4 评论 0原文

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

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

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

这似乎是理所当然的,但我想不出办法。我必须使用宏而不是块吗?

I basically want to do something like this in my base template:

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

In jinja2 it appears blocks are not variables and you can't get at their contents or test their values, or anything else but output them.

This seems like it would be a no-brainer to allow this, but I can't figure out a way. Do I have to use macros instead of blocks?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

飞烟轻若梦 2024-11-15 11:54:42

您应该能够使用 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 %}

You should be able check the contents of a block using the self.blockname syntax.

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

To quote from the documentation:

If you want to print a block multiple times you can however use the special self variable and call the block with that name:

<title>{% block title %}{% endblock %}</title>
<h1>{{ self.title() }}</h1>
{% block body %}{% endblock %}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文