jinja2-如何在if语句中放置块?

2024-09-28 23:19:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用if来确定哪个块应该填充我的{% block content %}

我有一个base.html,它有一个默认的{% block content %},这个模板正在扩展base.html。所以我试了一下:

{% extends "base.html" %}
{% if condition == True %}
    {% block content %}
    <div>blah blah blah blah</div>
    {% endblock content %}
{% endif %}

如果条件为真,我希望看到blah blah blah blah,如果条件不是真,我希望看到默认块。

但这两次我都得到了blah blah blah blah

然后我试了这个:

{% extends "base.html" %}
{% if condition == True %}
    {% block content %}
    <div>blah blah blah blah</div>
    {% endblock content %}
{% else %}
    {% block content %}
    <div>The Default Thing</div>
    {% endblock content %}
{% endif %}

我犯了个错误:

TemplateAssertionError: block 'content' defined twice

如何在if语句中放置块?


Tags: div模板truebaseifhtmlcontentcondition
1条回答
网友
1楼 · 发布于 2024-09-28 23:19:20

不能将{% block %}设为条件;使用标记后,将始终填充块。

将条件放入块中,并使用super()指示Jinja使用模板中定义的块的原始内容:

{% extends "base.html" %}
{% block content %}
    {% if condition %}
        <div>blah blah blah blah</div>
    {% else %}
        {{ super() }}
    {% endif %}
{% endblock content %}

相关问题 更多 >