Приведенные в материале вспомогательные функции и классы модуля jinja2
полезны, если добавляются свои собственные фильтры или функции в среду модуля jinja2
.
jinja2.pass_context()
передает Context
в качестве первого аргумента декорированной функции,jinja2.pass_environment()
передает Environment
в качестве первого аргумента декорированной функции,jinja2.environmentfilter()
маркирует фильтры, зависящие от Environment
,jinja2.environmentfunction()
маркирует функцию или метод как вызываемые из Environment
,jinja2.contextfilter()
маркирует фильтры, зависящие от Context
,jinja2.contextfunction()
маркирует функцию или метод как вызываемые из Context
,jinja2.escape()
преобразует &
, <
, >
, '
и "
в HTML-сущности,jinja2.clear_caches()
очищает кэши среды окружения и лексеров,jinja2.is_undefined()
проверяет, не определен ли переменная контекста.jinja2.pass_context(f)
:Декоратор jinja2.pass_context()
передает контекст Context
в качестве первого аргумента декорированной функции при вызове во время рендеринга шаблона.
Может использоваться в функциях, фильтрах и тестах.
Если нужен только Context.eval_ctx
, используйте jinja2.pass_eval_context()
. Если требуется только Context.environment
, используйте jinja2.pass_environment()
.
Новое в версии 3.0: заменяет контекстную функцию jinja2.contextfunction
и контекстный фильтр jinja2.contextfilter
.
jinja2.pass_environment(f)
:Декоратор jinja2.pass_environment()
передает Environment
в качестве первого аргумента декорированной функции при вызове во время рендеринга шаблона.
Может использоваться в функциях, фильтрах и тестах.
Новое в версии 3.0: заменяет функцию jinja2.environmentfunction()
и фильтр jinja2.environmentfilter()
.
jinja2.environmentfilter(f)
:Декоратор jinja2.environmentfilter()
передает среду Environment
в качестве первого аргумента декорированной функции.
Устарело с версии 3.0: будет удалено в Jinja 3.1. Вместо этого используйте jinja2.pass_environment()
.
jinja2.environmentfunction(f)
:Декоратор jinja2.environmentfunction()
передает среду Environment
в качестве первого аргумента декорированной функции.
Устарело с версии 3.0: будет удалено в Jinja 3.1. Вместо этого используйте jinja2.pass_environment()
.
jinja2.contextfilter(f)
:Декоратор jinja2.contextfilter()
передает контекст Context
в качестве первого аргумента декорированной функции.
Устарело с версии 3.0: будет удалено в Jinja 3.1. Вместо этого используйте jinja2.pass_context()
.
jinja2.contextfunction(f)
:Декоратор jinja2.contextfunction()
передает контекст Context
в качестве первого аргумента декорированной функции.
Такое поведение полезно, если функция хочет получить доступ к контексту или функциям, предоставленным в объекте контекста. Пример функции, которая возвращает отсортированный список переменных шаблона, экспортируемых текущим шаблоном:
@contextfunction def get_exported_names(context): return sorted(context.exported_vars)
Устарело с версии 3.0: будет удалено в Jinja 3.1. Вместо этого используйте jinja2.pass_context()
.
jinja2.escape(s)
:Функция jinja2.escape()
преобразует символы &
, <
, >
, '
и "
в строках s
в безопасные для HTML последовательности. Используйте эту функцию, если необходимо отобразить текст, который может содержать такие символы в HTML.
Эта функция не будет экранировать объекты, которые имеют представление HTML, например, уже экранированные данные.
Возвращаемое значение представляет собой объект Markup
.
>>> import jinja2 >>> m = jinja2.escape('&, <, >') >>> m # Markup('&, <, >') >>> str(m) # '&, <, >'
jinja2.clear_caches()
:Jinja хранит внутренние кэши для среды окружения и лексеров. Они используются для того, чтобы Jinja не приходилось их постоянно воссоздавать. Обычно, не нужно об этом заботиться, но если необходимо измерить потребление памяти, то можно очистить кэши при помощи функции jinja2.clear_caches()
.
jinja2.is_undefined(obj)
:Функция jinja2.is_undefined()
проверяет, не определен ли переданный объект. Это не что иное, как проверка экземпляра на Undefined
, но выглядит лучше.
Функцию можно использовать для настраиваемых фильтров или тестов, которые должны реагировать на неопределенные Undefined
переменные.
Например, настраиваемый фильтр по умолчанию может выглядеть так:
def default(var, default=''): if is_undefined(var): return default return var