Сообщить об ошибке.

Класс Context() модуля jinja2 в Python

Контекст содержит все переменные шаблона

Синтаксис:

import jinja2

jinja2.runtime.Context()

Возвращаемое значение:

Описание:

Контекст шаблона jinja2.runtime.Context() содержит все переменные шаблона. В нем хранятся значения, переданные в шаблон, а также имена, которые экспортирует шаблон.

Создание экземпляров jinja2.runtime.Context() не поддерживается и не является полезным, поскольку он создается автоматически на различных этапах оценки шаблона и не должно создаваться вручную.

Контекст Context неизменен. Изменения в родительском элементе не должны происходить, а изменения в переменных разрешены только из сгенерированного кода шаблона. Фильтры шаблонов и глобальные функции, помеченные как contextfunction() получают активный контекст, переданный в качестве первого аргумента, и им разрешен доступ к контексту только для чтения.

Контекст шаблона поддерживает операции, доступные dict (словарям Python), но только для чтения (get, keys, values, items, iterkeys, itervalues, iteritems, __getitem__, __contains__). Кроме того, существует метод Context.resolve(), который не вызывает ошибку KeyError, но возвращает объект Undefined для отсутствующих переменных.

Атрибуты и методы объекта Context.


Context.parent:

Атрибут Context.parent - это словарь (только для чтения) глобальных переменных, которые ищет шаблон. Они могут поступать из другого контекста, из Environment.globals или Template.globals, или указывать на словарь, созданный путем объединения глобальных переменных с переменными, переданными в функцию рендеринга. Его нельзя изменять.

Context.vars:

Атрибут Context.vars представляет собой локальные переменные шаблона. Этот словарь содержит функции среды окружения и контекста из Context.parent, а также локальные модификации и экспортированные переменные из шаблона. Шаблон изменит этот словарь во время оценки шаблона, но фильтры и контекстные функции не могут изменять его.

Context.environment:

Атрибут Context.environment среда окружения, в которую загружен шаблон.

Context.exported_vars:

Атрибут Context.exported_vars это множество содержит все имена, которые экспортирует шаблон. Значения имен указаны в словаре vars. Чтобы получить копию экспортированных переменных как словарь, можно использовать метод Context.get_exported().

Context.name:

Атрибут Context.name это имя загруженного шаблона, владеющего этим контекстом.

Context.blocks:

Атрибут Context.blocks это словарь с текущим словарем блоков в шаблоне. Ключи в этом слове - это имена блоков, а значения - список зарегистрированных блоков. Последний элемент в каждом списке - это текущий активный блок (последний в цепочке наследования).

Context.eval_ctx:

Атрибут Context.eval_ctx это текущий контекст оценки шаблона.

Context.call(callable, *args, **kwargs):

Метод Context.call() вызывает вызываемый объект с предоставленными аргументами и ключевыми словами, но вставляет активный контекст или среду в качестве первого аргумента соответственно, если вызываемый объект является contextfunction() или environmentfunction().

Context.get(key, default=None):

Метод Context.get() находит переменную по имени key или возвращает значение по умолчанию default, если ключ не найден.

Context.get_all():

Метод Context.get_all() возвращает полный контекст как словарь, включая экспортированные переменные. По причинам оптимизации это может не вернуть реальную копию, поэтому будьте осторожны с ее использованием.

Context.get_exported():

Метод Context.get_exported() возвращает новый словарь с экспортированными переменными.

Context.resolve(key):

Метод Context.resolve() ищет переменную как метод словаря dict.get(), но возвращает объект Undefined для отсутствующих переменных.

Если необходимо добавить настраиваемое поведение, то переопределите метод Context.resolve_or_missing(), т.к. он использует различные функции поиска.

Context.resolve_or_missing(key):

Метод Context.resolve_or_missing() находит переменную по имени key или возвращает missing, если ключ key не найден.

Чтобы добавить настраиваемое поведение поиска необходимо переопределить этот метод. Методы Context.resolve(), Context.get() и Context.__getitem__() используют этот метод. Не вызывайте этот метод напрямую.