Jinja:如何覆盖超级块中的变量?

问题描述 投票:0回答:2

我有一个模板

parent.tpl
:

{% set myvar = 'AAA' %}

{% block par %}
{{ myvar }}
{% endblock %}

和一个

child.tpl

{% extends "parent.tpl" %}

{% block par %}
{% set myvar = 'BBB' %}
{{ super() }}
{% endblock %}

child.tpl
结果:

AAA

但不是

BBB

如何获得具有变量覆盖的

BBB
输出?

谢谢

python templates jinja2
2个回答
2
投票

如果您使用 Flask,则可以使用像

g.myvar
这样的全局变量。它将在每个模板中可用。

看看 Jinja2 中的 将变量从子模板传递到父模板


0
投票

使用命名空间:

parent.tpl:

{% set ns=namespace(myvar = 'AAA') %}

{% block par %}
{{ ns.myvar }}
{% endblock %}

child.tpl:

{% extends "parent.tpl" %}

{% block par %}
{% set ns.myvar = 'BBB' %}
{{ super() }}
{% endblock %}
© www.soinside.com 2019 - 2024. All rights reserved.