【发布时间】:2017-03-29 17:55:24
【问题描述】:
我有一个全局函数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 中以context 结尾的唯一变量是i。 j 和 k 是“不可读的”。除了将它们传递给test(j, k)
【问题讨论】:
-
您是否在模板中使用上下文导入? (例如:{% from 'admin/lib.html' import render_form, render_field, render_form_fields with context %})
-
为了这个例子,没有导入。在编译的模板上调用
render,并将test()添加到env['globals'] -
你必须将 j, k 传递给函数。这些变量是 for 块的本地变量,对全局上下文不可用。 j 是不言自明的; k 是本地的,因为
{% set %}doesn't assign to the global context.