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

时间:2018-10-26 11:33:56

标签: python jinja2

This question was asked once,但是它没有回答问题,因此我直接提出了疑问。

我正在尝试在子模板中设置一个变量,以便它更改父模板呈现事物的方式。在这个问题上,我给出一个实际的例子。

我的网站有2种模板。一种显示内容狭窄且全宽的模板。

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

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不是True。

还有其他可行的方法吗?我不想在page.html中重复page-fullwidth.html的内容。 (实际上,这个文件更复杂。)

1 个答案:

答案 0 :(得分:2)

几乎正确。这就是答案。变量设置器必须在程序段之外

page-fullwidth.html

{% extends "page.html" %}

{% set fullwidth = true %}

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