Я добавляю некоторые глобальные переменные в свой обработчик, которые должны быть доступны для всех шаблонов, включая макросы.
jinja_env.globals.update({
"SOME_CONSTANT": SOME_CONSTANT_1,
})
Это прекрасно работает, когда я использую его внутри макроса, например:
{% macro is_some_constant(some_str) -%}
some_str == SOME_CONSTANT
{%- endmacro %}
Но я получаю неопределенную ошибку, когда пытаюсь использовать глобальный аргумент по умолчанию для макроса:
{% macro test_something(something=SOME_CONSTANT) -%}
...
{%- endmacro %}
Результат: NameError: global name 'l_SOME_CONSTANT' is not defined
Ожидается ли это?Я обнаружил эту связанную проблему , которая, как утверждается, была исправлена этим PR , но все еще сталкивалась с этим.Обходной путь, упомянутый в первой ссылке, работает, но выглядит глупо и раздражает:
{% set SOME_CONSTANT = SOME_CONSTANT %}
{% macro test_something(something=SOME_CONSTANT) -%}
...
{%- endmacro %}