全局函数中的Jinja2帧变量

时间:2016-11-15 18:09:22

标签: python jinja2

我有一个全局函数test

from jinja2.utils import contextfunction

@contextfunction
def test(context):
    context.get_all()

在我的测试中,我这样称呼它......

{% set i = 0 %}
{% for j in range(0, 10) %}
   {% set k = 0 %}
   {{ test() }}
{% endfor %}

contexttest中唯一的变量是ijk“不可读”。有没有办法访问它们而不是将它们传递到test(j, k)

1 个答案:

答案 0 :(得分:2)

根据github issue with a similar concern,您定义为jk的变量是在本地设置的,而不是全局设置的。您尝试调用的函数将无法识别变量k,除非您将其传递给函数。这是记录在案的行为。

相关的stackoverflow问题:

Can a Jinja variable's scope extend beyond in an inner block?

Jinja2: Change the value of a variable inside a loop