Python 全局函数中的Jinja2帧变量

Python 全局函数中的Jinja2帧变量,python,jinja2,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 %} 在test的上下文中结束的唯一变量是ij和k是“不可读的”

我有一个全局函数
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 %}
test
上下文中结束的唯一变量是
i
<代码>j
k
是“不可读的”。根据a,您定义为
j
k
的变量是本地设置的,而不是全局设置的,除了将它们传递到
test(j,k)
之外,还有其他方法访问它们吗。您试图调用的函数将无法识别变量
k
,除非您将其传递给函数。这是记录在案的行为

相关问题:


是否在模板中使用上下文导入?(例如:{%from'admin/lib.html'import render_form,render_field,render_form_fields with context%})在本例中,没有导入<代码>渲染在编译的模板上被调用,并且
测试()
被添加到
env['globals']
您必须将j,k传递给函数。这些变量是for块的局部变量,在全局上下文中不可用。j是不言自明的;k是本地的,因为这也是我的结论。很高兴有一个健全的检查。奇怪的是你不能进入本地街区。