Невозможно использовать глобальные переменные в качестве аргументов по умолчанию в макросах - PullRequest
0 голосов
/ 23 октября 2018

Я добавляю некоторые глобальные переменные в свой обработчик, которые должны быть доступны для всех шаблонов, включая макросы.

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

1 Ответ

0 голосов
/ 23 октября 2018

О, я понял, что я на jinja2 v2.8, и fix PR был объединен в 2.9 (я думаю).Так что, возможно, это решит проблему.

Пока я просто воспользуюсь хакерским обходным путем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...