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

Декораторы для добавления фильтров или функции в среду Jinja.

Приведенные в материале вспомогательные функции и классы модуля jinja2 полезны, если добавляются свои собственные фильтры или функции в среду модуля jinja2.

Содержание:


jinja2.environmentfilter(f):

Декоратор jinja2.environmentfilter() предназначен для маркировки фильтров, зависящих от среды Environment. Текущая среда Environment передается фильтру в качестве первого аргумента.

jinja2.contextfilter(f):

Декоратор jinja2.contextfilter() предназначен для маркировки фильтров, зависящих от контекста. Текущий контекст Context будет передан в качестве первого аргумента.

jinja2.environmentfunction(f):

Декоратор jinja2.environmentfunction() можно использовать, чтобы пометить функцию или метод как вызываемые из среды Environment. Этот декоратор работает точно так же, как декоратор jinja2.contextfunction(), только первый аргумент - это активная среда, а не контекст.

jinja2.contextfunction(f):

Декоратор jinja2.contextfunction() может использоваться для обозначения вызываемой функции или метода в контексте. Вызываемому контексту передается активный контекст в качестве первого аргумента при вызове из шаблона.

Такое поведение полезно, если функция хочет получить доступ к контексту или функциям, предоставленным в объекте контекста. Пример функции, которая возвращает отсортированный список переменных шаблона, экспортируемых текущим шаблоном:

@contextfunction
def get_exported_names(context):
    return sorted(context.exported_vars)

jinja2.escape(s):

Функция jinja2.escape() преобразует символы &, <, >, ' и " в строках s в безопасные для HTML последовательности. Используйте эту функцию, если необходимо отобразить текст, который может содержать такие символы в HTML.

Эта функция не будет экранировать объекты, которые имеют представление HTML, например, уже экранированные данные.

Возвращаемое значение представляет собой объект Markup.

>>> import jinja2
>>> m = jinja2.escape('&, <, >')
>>> m
# Markup('&amp;, &lt;, &gt;')
>>> str(m)
# '&amp;, &lt;, &gt;'

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