Импортировать/включить назначенные переменные в Jinja2
В 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
.
Спасибо, что прочитали.
Брайан
Ответы
Ответ 1
Есть разница между include
и import
, хотя вы должны иметь возможность делать оба.
-
include 'B.jinja
просто отображает шаблон и игнорирует любые назначения переменных или макросы внутри него.
-
import 'B.jinja' as B
, импортирует B
, как если бы это был модуль, поэтому вы должны выводить B.N
.
-
from 'B.jinja' import N
напрямую импортирует переменную N
.
Измените свою линию импорта на последнюю опцию и посмотрите, не исправляет ли она это. Если вам нужна дополнительная помощь, просмотрите документацию.