如何在Jinja2的子模板中设置变量?

4

这个问题曾经被问过,但是没有得到答案,所以我直接重新提问它。

我正在尝试在子模板中设置一个变量,以便更改父模板如何呈现事物。在这个问题中,我展示了一个实际的例子。

我的网站有两种类型的模板。一种是将内容显示为窄屏幕的模板,另一种是全屏宽度的模板。

(我删除了所有复杂性,以便向您展示一个简单的例子)

page.html

{% extends "base.html" %}

{% block content %}
        <div id="pageContentContainer">
            <div class="row">
            {% if fullwidth %}
                <div class="col-12">fffff
                    {{super()}}
                </div>
            {% else %}
                <div class="col-9">
                    {{super()}}
                </div>
            {% endif %}
            </div>
        </div>
{% endblock %}  

page-fullwidth.html

{% extends "page.html" %}

{% block content %}
    {% set fullwidth = true %}
    {{super()}}
{% endblock %}

这不起作用。在父模板中,变量fullwidth不是真的。

有没有其他实际的方法来解决这个问题?我不想在page-fullwidth.html中重复page.html的内容。(在真实情况下,这个文件更加复杂。)

1个回答

6
几乎正确。这是答案。变量设置器需要放在块外面。 page-fullwidth.html
{% extends "page.html" %}

{% set fullwidth = true %}

{% block content %}
    {{super()}}
{% endblock %}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接