Импорт / включает присвоенные переменные в 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 установлен.

Спасибо за чтение.

Brian

15
задан Brian M. Hunt 10 June 2010 в 19:10
поделиться

1 ответ

Есть разница между include и import , хотя вы должны иметь возможность делать и то, и другое.

  • include 'B.jinja просто отображает шаблон и игнорирует любые присвоения переменных или макросы в нем.
  • импортировать B.jinja как B , импортировать B , как если бы это был модуль, поэтому вы должны вывести B.N .
  • from 'B.jinja' import N напрямую импортирует переменную N .

Измените строку импорта на последнюю опцию и посмотрите, исправит ли это ситуацию. Если вам нужна дополнительная помощь, посмотрите документацию .

23
ответ дан 1 December 2019 в 03:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: