Нет. Контекст (который в основном представляет собой массив dicts) передается в шаблонизатор вместе с именем шаблона. Хотя можно установить значение контекста, содержащее имя шаблона, внутри шаблона, это не происходит автоматически.
Просматривая код в django / template / loader_tags.py, я заметил, что class BlockNode
делает context.push()
перед рендерингом его содержимого и context.pop()
после. Это исключает возможность установки значений внутри одной замены блока и последующего использования этого значения внутри другой замены блока. Это происходит не слишком часто, поскольку язык шаблонов Django напрямую не поддерживает присвоение значений, кроме как с помощью тега {% with%} (который, что интересно, выполняет те же операции push / pop, что и тег {% block%} ).
class IncludeNode
подклассы class Node
, но не class BlockNode
, поэтому в данном случае не происходит никакого вложения контекстов.