В Jinja2, как может один доступ присвоенные переменные (т.е. {% set X=Y %}
) в файлах, включенных с include
?
Я ожидал бы, что следующее будет работать, учитывая два файла Jinja2:
A.jinja
:
Stuff
{% include 'B.jinja' -%}
B has {{ N }} references
B.jinja
:
{% set N = 12 %}
Я ожидал бы это A.jinja
, при компиляции с Jinja2 произведет следующий вывод:
Stuff
B has 12 references
Однако это производит:
Stuff
B has references
Я был бы очень обязан для любого входа относительно того, как получить доступ к переменным Jinja2, такой как N
выше, в файле, который включает файл где N
установлен.
Спасибо за чтение.
Brian
Есть разница между include
и import
, хотя вы должны иметь возможность делать и то, и другое.
include 'B.jinja
просто отображает шаблон и игнорирует любые присвоения переменных или макросы в нем. импортировать B.jinja как B
, импортировать B
, как если бы это был модуль, поэтому вы должны вывести B.N
. from 'B.jinja' import N
напрямую импортирует переменную N
. Измените строку импорта на последнюю опцию и посмотрите, исправит ли это ситуацию. Если вам нужна дополнительная помощь, посмотрите документацию .