我在处理程序中添加了一些全局变量,这些全局变量应可用于所有模板,包括宏。
jinja_env.globals.update({
"SOME_CONSTANT": SOME_CONSTANT_1,
})
当我在这样的宏中使用它时,它工作正常:
{% macro is_some_constant(some_str) -%}
some_str == SOME_CONSTANT
{%- endmacro %}
但是当我尝试使用全局变量作为宏的默认arg时,我得到了一个未定义的错误:
{% macro test_something(something=SOME_CONSTANT) -%}
...
{%- endmacro %}
结果:NameError: global name 'l_SOME_CONSTANT' is not defined
这是预期的吗?我发现了这个related issue已修复的this PR,但仍然遇到了这个问题。第一个链接中提到的解决方法确实有效,但是有点愚蠢和烦人:
{% set SOME_CONSTANT = SOME_CONSTANT %}
{% macro test_something(something=SOME_CONSTANT) -%}
...
{%- endmacro %}