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 %}

testcontext 中结束的唯一变量是 ijk 是“不可读的”。除了将它们传递给 test(j, k)

之外,还有什么方法可以访问它们吗?

最佳答案

根据 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

关于python - 全局函数中的 Jinja2 框架变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40616807/

相关文章:

javascript - 通过 Python 将 SQL 查询返回到 JavaScript?

python - Ansible - 如何从列表中删除项目?

python - 如何将文件重命名为文件名中的子字符串?

python - Flask - 获取 session 的查询结果

python - 如何操作jinja html文件

string - 如何将配置文件(行)转换为 Ansible 中的字典列表

ansible - Jinja2 和 ansible 制作子字典的问题

python - 从 jinja2 调用 python 函数

python - 有什么好的方法可以为 swig 接口(interface)生成文档吗?

python - 从数据框中的文本列中选择唯一的组合