Что такое скроп переменных в блоке у дзиндзя? - PullRequest
0 голосов
/ 12 октября 2018

Во-первых, я не спрашиваю о цикле (для)!
В Jinja я не понимаю действительную область видимости переменных, определенных внутри и снаружи блока.Например, если я определю {% set a = ...%} внутри блока, могу ли я использовать его в другом блоке?Если я определил их в суперклассе, в дочернем классе, в каком диапазоне я могу их использовать?Я обнаружил, что иногда он передается из одного блока в другой (или отсюда туда), а иногда нет.Я не могу найти никакого документа, объясняющего это.
(что я имею в виду, "передать" - это использовать {{a}} напрямую, и оно возвращает действительное значение.)

1 Ответ

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

Переменные в block, for, macro и filter все локальные.Они действительны только внутри этих блоков.
Подробности можно найти здесь .Ниже приведен пример:

.. sourcecode :: jinja

{% macro angryhello name %}
  {% set angryname = name|upper %}
  Hello {{ name }}. Hello {{ name }}!
  HELLO {{ angryname }}!!!!!!111
{% endmacro %}

Переменная angryname просто существует внутри макроса, а не за его пределами.

...