ENote
  • ✨Home
    • Відмова від відповідальності
  • Progr
    • Python
      • Модулі
        • pip
        • cgitb
        • datetime
          • Класс datetime() модуля datetime
            • Методы объекта datetime.datetime()
            • datetime.datetime examples
          • Класс timedelta() модуля datetime
            • datetime.timedelta examples
          • Класс date() модуля datetime
            • datetime.date examples
          • Класс time() модуля datetime
            • Формат для функций .strftime() и .strptime(). модуля datetime
        • os.path
        • pathlib
          • pathlib to str
        • subproces
        • os
        • Jinja
          • Синтаксис шаблонів Jinja
          • Клас Environment()
          • Простой пример cgi-скрипта c Jinja-шаблоном
          • Создание переменных
            • Як оновити глобальну змінну зсередини оператора IF / ELSE або циклу FOR
          • Фільтри і методи
          • Число у рядок, slices
          • Вбудовані фільтри Jinja2
        • re
          • re.search - example
          • re.findall - example
        • email / smtplib
          • Как отправлять электронные письма с помощью Python
        • requests
          • Як зберегти та завантажити файли cookie в запитах Python?
          • Извлечение и установка cookies с модулем requests в Python
          • Links
        • http.cookies
          • Всё о работе с cookie в Python — класс http.cookies
        • xlrd
        • xlwt
        • borb
          • ChunkOfText
          • send_usage_statistics
          • borb clear
          • 2.1.3 vs 2.1.15
          • QR-code
          • Залежності borb
        • JSON
          • Кирилиця в JSON
        • matplotlib
        • argparse
        • click
        • configparser
        • traceback
        • sys
          • exit()
        • mysql-connector-python
        • logging
        • icrawler
        • Auto Plates
        • rembg
        • random
      • Strings
        • Built-in methods
        • Форматування виводу
        • Початкові нулі
        • Рядок в число
      • list
        • Об’єднання списків
        • list.sort(), sorted()
        • list.reverse(), reversed()
        • all(), any()
        • sum(), min(), max()
        • map(), filter(), reduce()
        • join(), split()
      • tuple
      • dict
        • Об'єднання / злиття словників
        • Сортування словника Python: значення, ключі тощо
      • set
      • class Enum
      • Середнє арифметичне
      • Virtual environment
        • web-app
      • type(), isinstance()
      • __main__
      • Files & Dirs
        • Try except for exception handling
        • Cписок файлов директории
        • User Home Dir
        • Copy file
      • *args, **qwargs
      • Links
      • Область видимости
      • Handling a File Error
      • assert
      • if
      • Числа
        • Округлення чисел
        • Отримати число з рядка
      • Обработка исключений в Python
      • Файлы и сериализация данных
      • OOP
      • Net and Web
      • Структура проекта на Python
      • Распаковка итерируемых объектов
      • Links
      • Algorithms
      • Python exit commands: quit(), exit(), sys.exit() and os._exit()
      • Цикли for / while
      • uuid
    • JavaScript
      • String
        • replaceAll() polyfill
        • Шаблонные строки
      • Array
        • Все способы перебора массива в JavaScript
      • Object
      • document.location
      • RegExp
      • Examples
        • Вычисление остатка от деления
        • Остаток от деления и деление без остатка
        • Округление числа
      • XMLHttpRequest
      • alert, prompt, confirm
      • onclick
      • hidden, display:none
      • LocalStorage, sessionStorage
      • null, undefined
      • cookies (js)
      • var, let и const
        • var vs let
        • const
      • Модифікація DOM
        • DOM select
      • JSON
        • Try
      • fetch
      • typeof
      • FormData не включає disabled набори полів
      • FormData, fdata
      • Більше одного відео YouTube на одній сторінці
    • HTML, CSS
      • favicon
      • Деякі спецсимволи
      • meta
      • ASCII table
      • lang
      • Псевдоелементи ::after і ::before
      • Cursor
      • Об использовании нестандартных пробелов
      • Картинка фоном
      • Безпечні веб-шрифти
      • Завжди внизу, незалежно від пропорцій екрану
      • напівпрозорий елемент
      • Символи з тінью
      • SVG (bootstrap)
      • rel = canonical
      • link stylesheet: integrity & crossorigin
      • rel = noopener
    • Bootstrap
      • Form Validate
      • Password show/hide
    • Errors
  • Dev
    • Git
      • clone
      • git-scm (book)
      • git config
        • files .git*
        • core.filemode
        • core.sharedRepository
      • .gitignore
      • .gitkeep
      • Видалити з репозиторію
        • Видалений файл з однієї гілки...
      • Пам’ятка
        • Перегляд історії комітів
        • Скасувати git add
        • revert
        • Скасувати внесені зміни у файл
        • Додати до коміту файл
        • Видалити історію попередніх коммітів, та почати "з нуля"
        • Додати файли в останній коміт
      • Робота з гілками
        • Порівняти гілки
      • Git за полчаса
      • Три розділи проєкту Git
      • Merge conflict
      • Pull error
        • Git Error: You have divergent branches...
      • diff
      • Video
      • Merge скасувати
      • .gitignore: Permission denied
    • GitHub
      • SSH-підключення до GitHub
      • Перенести на сервер локальный репозиторий
      • Перенести на сервер репозиторій разом з історією
      • Створення змісту
    • Security
      • robots.txt
      • Cookies
    • Аутентифікація і cookies
      • ChatGPT
  • data
    • MySQL
      • MyISAM vs InnoDB
      • Типи даних
        • NULL (todo)
        • TIMESTAMP
        • YEAR
        • JSON
        • Требования к памяти для символьных типов
        • Поиск записей в таблице, которым нет соответствия в другой
      • Приклад створення БД, та користувача
        • Права для пользователей
      • Переглянути всі індекси таблиці
      • Копіювання, клонування таблиць
      • TEMPORARY TABLE
      • JOIN
      • ALTER TABLE
      • AUTO_INCREMENT
        • AUTO_INCREMENT у складовому індексі
      • LIMIT
        • Использование MySQL LIMIT
      • 10 Примеров входной загрузки данных из текстового файла в таблицы MySQL
      • Рішення
        • Выявление и удаление несвязанных записей
        • Выборка произвольных записей
        • Коректне сортування українських літер
        • Найти записи, которые присутствуют в одной таблице и отсутствуют во второй
        • Как удобно посмотреть данные...
        • Нахождение "дыр" в нумерации
        • Знайти дубликати полів в одній таблиці
        • Дані колонки 1 табл. перенести в 2 табл.
      • Функції
        • LAST_INSERT_ID()
        • GROUP_CONCAT
        • COUNT + DISTINCT
        • Функции для работы с датами и временем
      • Автоматизируйте создание бэкапов
      • mysqldump
        • Time Zone UTC
      • Результат запиту у файл
      • Результат запиту у змінну
      • Пособие по MySQL на Python
      • Змінні
      • Эмуляция функции row_number() в MySQL
      • Изучаем хранимые процедуры MySQL
      • SELECT DISTINCT
      • Dump всієї бази даних
      • Індекси
      • FOREIGN KEY
      • MAX(), MIN()
      • LENGTH, CHAR_LENGTH
      • Встановлення
    • MariaDB
    • PostgreSQL
      • Работа с базой данных PostgreSQL
      • Работаем с PostgreSQL через командную строку в Linux
    • Domains
      • Життєвий цикл доменів
      • Статус домена
    • SQLite, MySQL и PostgreSQL: сравниваем популярные реляционные СУБД
  • Linux
    • DNS
      • Как в DNS прописать 301 редирект
      • mail
        • SPF
          • Mirohost
        • _dmarc _domainkey
        • DKIM
        • Прописати ключі DKIM в exim
        • Листи з неіснуючим адресатом
    • Server
      • Zomro
        • pip
        • SSH-доступ по ключу (zomro)
        • venv
        • UnicodeEncodeError: 'latin-1' codec can't encode character
        • Mail Ports
        • Редірект з SSL-сертификатом на транзитному сайті
        • Редірект з SSL за допомогою .htaccess
      • Створення нового користувача з привілеями sudo в Ubuntu
      • SSH-доступ по ключу
      • Часовий пояс в Ubuntu 20.04
      • SSH-підключення командний рядок
      • Як встановити Python 3.9 (нижчу) на Ubuntu 22.04
      • Автозагрузка сервисов в Ubuntu
      • Підвищення безпеки SSH
      • Ubuntu Server
        • Art 01
    • Commands
      • adduser
      • apt
      • cat
      • ls
      • tar
      • ln
      • find
      • chmod
      • chown
      • mv
      • dig
      • ping
      • passwd
      • htpasswd
      • umask
      • usermode
      • history
      • cmp
      • chattr +i
    • Config
      • Keyboard
      • windows
      • My kbdswtch
      • Затримка при завантаженні системи
      • Files
        • /etc/resolv.conf
        • /boot/grub/grub.cfg
        • .config/user-dir.dirs
        • /etc/fstab
      • Як встановити шрифти
    • Apache
      • Встановлення
      • Подключить виртуальный хост
      • Файл .htaccess
        • Установка индексного файла
        • Фільтр IP-адрес
        • ModRewrite
          • Заборонити доступ за User-Agent
          • Перенаправити на іншу сторінку
          • Додавати слеш до адреси
        • Включити SSI
        • Виконувати скрипти CGI
        • Тимчасовий перехід з одного домену на інший
      • SSI
      • SSL
      • Відключити старт Apache з системою
      • Помилки
        • Скрипт не працює
        • CGI-скрипт не виводить кирилицю
        • Could not reliably determine
        • Permissions are missing on a component of the path
        • Symbolic link not allowed or link target not accessible
      • AddType, AddLanguage, AddCharset
    • Nginx
      • 301 редирект з www. та http: на https://(без www.)domain
    • Soft
      • SublimeText
        • Plugins
      • Firefox
      • Gwenview
      • inkscape
      • Double Commander
      • nano
      • mc
        • Знайти потрібний файл
      • meld / diffuse
      • hexedit
      • Kazam - відео з екрану
      • VeraCrypt
      • XnView MP
      • LibreOffice
      • xdotool
      • System Load Monitor
      • Battery Monitor
      • qBittorrent
    • Перетворення .RPM в .DEB
    • Bash
      • Конкатенация строк в Bash
      • Page
    • Файлові часові позначки в Linux: atime, mtime, ctime
    • Права доступу для файлів і каталогів
    • Зміна паролю root
    • Быстро удалить огромное количество файлов в каталоге
    • Як узнати версію Linux?
    • USB Flash ext4
    • Clear Cache
    • Доступ до спільної папки на Windows
    • Віртуальні консолі TTY1–TTY6
    • APT. Заборона оновлення
  • Різне
    • GitBook
    • Банковское округление
    • Ім’я користувача Youtube
  • Hard
    • Hardware
      • Acer Extensa
      • Таймер Feron TM22
      • WD My Book World Edition 2Tb
        • FTP
        • SSH
          • Проблеми
        • SSHFS
      • Canon PIXMA E3340
      • Термометри
    • Auto
      • Акумулятор
    • Electro
    • USB Flash recovery
Powered by GitBook
On this page
  • Как применять фильтры к переменным.
  • Все встроенные фильтры модуля Jinja2:
  1. Progr
  2. Python
  3. Модулі
  4. Jinja

Вбудовані фільтри Jinja2

Как применять фильтры к переменным.

В шаблонах Jinja2, переменные могут быть изменены фильтрами. Фильтры отделяются от переменной символом канала '|' и могут иметь необязательные аргументы в круглых скобках. Несколько фильтров могут быть объединены в цепочку. Выход одного фильтра применяется к следующему.

Например, выражение в шаблоне {{ name|striptags|title }} удалит все HTML-теги из переменной name, а так же все слова будут начинаться с заглавной буквы.

Фильтры в шаблонах jinja2 принимают левую часть выражения в качестве первого аргумента, а аргументы, передаваемые в сам фильтр служат дополнительными позиционными или ключевыми аргументами. Например, в выражении шаблона {{ lst|join(', ') }} функция фильтра join() будет вызываться с аргументами attr(lst, ', ').

В шаблонах jinja2 так же можно использовать разделы фильтров, которые позволяют применять фильтры к блоку данных шаблона.

{% filter upper %}
    Этот текст становится прописным
{% endfilter %}

Все встроенные фильтры модуля Jinja2:

  • abs() возвращает абсолютное значение,

  • attr() возвращает атрибут объекта по имени,

  • batch() делит исходную последовательность на списки с заданным количеством элементов,

  • capitalize() преобразует первый символ строки в верхний регистр,

  • center() центрирует значение в поле заданной ширины,

  • default() возвращает значение по умолчанию, если переменная не определена,

  • dictsort() сортирует словарь,

  • escape() экранирует HTML,

  • filesizeformat() форматирует значение как размер файла,

  • first() возвращает первый элемент списка,

  • float() преобразует значение в float,

  • forceescape() принудительно экранирует HTML,

  • format() форматирует строку в стиле printf,

  • groupby() группирует последовательность объектов по атрибуту,

  • indent() делает отступы для каждой строки,

  • int() преобразует значение в int,

  • join() объединяет список строк в одну строку,

  • last() возвращает последний элемент списка,

  • length() возвращает количество элементов в контейнере,

  • list() преобразует значение в список,

  • lower() преобразует строку в нижний регистр,

  • map() извлекает определенный атрибут из списка объектов,

  • max() возвращает максимальный элемент списка,

  • min() возвращает минимальный элемент списка,

  • pprint() красиво печатает переменную,

  • random() возвращает случайный элемент из списка,

  • reject() фильтрует последовательность, исключая те элементы, для которых тест вернул True,

  • rejectattr() фильтрует список объектов, исключая те объекты, для которых тест атрибута объекта вернул True,

  • replace() заменяет подстроку в строке на новое значение,

  • reverse() переворачивает последовательность/контейнер,

  • round() округляет число до заданной точности,

  • safe() отменяет автоматическое экранирование HTML,

  • select() фильтрует последовательность, исключая те элементы, для которых тест вернул False,

  • selectattr() фильтрует список объектов, исключая те объекты, для которых тест атрибута объекта вернул False,

  • slice() делит исходную последовательность на указанное количество списков,

  • sort() сортирует последовательность,

  • string() преобразует строку в unicode,

  • striptags() удаляет теги HTML,

  • sum() возвращает сумму последовательности чисел,

  • title() все слова начинаются с прописных букв,

  • tojson() преобразует структуру в JSON,

  • trim() удаляет начальные и конечные символы,

  • truncate() возвращает усеченную копию строки,

  • unique() возвращает список уникальных элементов,

  • upper() преобразует строку в верхний регистр,

  • urlencode() преобразует данные для использования в URL,

  • urlize() преобразует текстовые URL-адреса в ссылки,

  • wordcount() считает слова в строке,

  • wordwrap() форматирует строку до заданной ширины,

  • xmlattr() создает атрибуты HTML на основе словаря.


abs(x, /):

Фильтр abs() возвращает абсолютное значение аргумента..

attr(obj, name):

Фильтр attr() получает атрибут объекта obj по его имени name. Выражение шаблона {{ foo|attr("bar") }} работает так же, как foo.bar, только всегда возвращается атрибут и элементы не просматриваются.

batch(value, linecount, fill_with=None):

Фильтр batch() делит исходный список на списки с заданным количеством элементов, и возвращает список списков. Если указан аргумент fill_with, то он используется для заполнения недостающих элементов.

Смотрим пример:

<table>
{%- for row in items|batch(3, '&nbsp;') %}
  <tr>
  {%- for column in row %}
    <td>{{ column }}</td>
  {%- endfor %}
  </tr>
{%- endfor %}
</table>

capitalize(s):

Фильтр capitalize() преобразует первый символ строки s в верхний регистр, все остальные символы будут - в нижнем регистре.

center(value, width=80):

Фильтр center() центрирует значение value в поле заданной ширины width.

default(value, default_value='', boolean=False):

Если переменная value не определена, то фильтр default() вернет значение аргумента default_value, в противном случае значение переменной value:

{{ my_variable|default('my_variable не определена') }}

Код выше выведет значение my_variable, если переменная была определена, если нет, то строку 'my_variable не определена'. Если надо использовать значение по умолчанию с переменными, которые оцениваются как False, то необходимо установить аргумент boolean=True:

{{ ''|default('the string was empty', true) }}

dictsort(value, case_sensitive=False, by='key', reverse=False):

{% for key, value in mydict|dictsort %}
    сортирует словарь по ключу, без учета регистра

{% for key, value in mydict|dictsort(reverse=true) %}
    сортирует словарь по ключу, без учета регистра, обратный порядок

{% for key, value in mydict|dictsort(true) %}
    сортирует словарь по ключу, с учетом регистра

{% for key, value in mydict|dictsort(false, 'value') %}
    сортирует словарь по значению, без учета регистра

escape(s):

filesizeformat(value, binary=False):

Фильтр filesizeformat() форматирует значение как удобочитаемый размер файла (например, 13 KB; 4,1 MB; 102 bytes и т. д.).

По умолчанию используются десятичные префиксы (Mega, Giga и т. д.), Если второй параметр имеет значение True, используются двоичные префиксы (Mebi, Gibi).

first(seq):

Фильтр first() возвращает первый элемент последовательности..

float(value, default=0.0):

forceescape(value):

Фильтр forceescape() принудительно экранирует HTML. Если HTML-разметка уже имеет HTML-сущности, то применение этого фильтра, повторно экранирует HTML-сущности.

format(value, *args, **kwargs):

{{ "%s, %s!"|format(greeting, name) }}
Hello, World!
{{ "%s, %s!" % (greeting, name) }}
{{ "{}, {}!".format(greeting, name) }}

groupby(value, attribute):

Например, список объектов User с атрибутом city может отображаться в группах. В этом примере grouper относится к значению city в группе.

<ul>{% for city, items in users|groupby("city") %}
  <li>{{ city }}
    <ul>{% for user in items %}
      <li>{{ user.name }}
    {% endfor %}</ul>
  </li>
{% endfor %}</ul>

Фильтр groupby() возвращает [именованный кортеж] (grouper, list), который можно использовать вместо распаковки кортежей, описанной выше.

  • grouper - это значение атрибута,

  • list - это элементы с этим значением.

<ul>{% for group in users|groupby("city") %}
  <li>{{ group.grouper }}: {{ group.list|join(", ") }}
{% endfor %}</ul>

indent(s, width=4, first=False, blank=False, indentfirst=None):

Фильтр indent() возвращает копию строки s с отступом в 4 пробела для каждой строки. По умолчанию первая строка и пустые строки не имеют отступа.

Аргументы фильтра:

  • width – Количество пробелов, на которые нужно сделать отступ.

  • first – Не пропускает отступ в первой строке.

  • blank – Не пропускает отступы в пустых строках.

int(value, default=0, base=10):

join(value, d='', attribute=None):

Разделитель между элементами представляет собой пустую строку по умолчанию, можно определить ее с помощью необязательного параметра d:

{{ [1, 2, 3]|join('|') }}
    -> 1|2|3

{{ [1, 2, 3]|join }}
    -> 123

Также возможно объединение определенных атрибутов объекта:

{{ users|join(', ', attribute='username') }}

last(seq):

Фильтр last() возвращает последний элемент последовательности seq.

{{ data | selectattr('name', '==', 'Jinja') | list | last }}

length(obj, /):

Фильтр length() возвращает количество элементов в контейнере.

list(value):

Фильтр list() преобразует значение value в список. Если это была строка, то возвращаемый список будет списком символов строки.

lower(s):

Фильтр lower() преобразует значение value в нижний регистр.

map(*args, **kwargs):

Фильтр map() применяет фильтр к последовательности объектов или извлекает определенный атрибут у этих объектов. Фильтр полезен при работе со списками объектов, для которых интересно только их определенное значение.

Основное использование - отображение атрибута. Представьте, что есть список пользователей, но необходимо извлечь только список имен пользователей:

Пользователи на этой странице: {{ users|map(attribute='username')|join(', ') }}

Можно указать значение по умолчанию, которое будет использоваться, если объект в списке не имеет данного атрибута.

{{ users|map(attribute="username", default="Anonymous")|join(", ") }}

В качестве альтернативы можно позволить ему вызывать фильтр, передав впоследствии имя фильтра и аргументы. Хорошим примером может быть применение фильтра преобразования текста к последовательности:

Пользователи на этой странице: {{ titles|map('lower')|join(', ') }}
(u.username for u in users)
(u.username or "Anonymous" for u in users)
(do_lower(x) for x in titles)

Изменено в версии 2.11.0: Добавлен параметр по умолчанию.

max(value, case_sensitive=False, attribute=None):

Фильтр max() возвращает самый большой элемент из последовательности.

{{ [1, 2, 3]|max }}
    -> 3

Аргументы фильтра:

  • case_sensitive – рассматривает строки верхнего и нижнего регистра как отдельные.

  • attribute – получает объект с максимальным значением этого атрибута.

min(value, case_sensitive=False, attribute=None):

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

возвращает{{ [1, 2, 3]|min }}-> 1```

Аргументы фильтра:

  • case_sensitive – рассматривает строки верхнего и нижнего регистра как отдельные.

  • attribute – получает объект с максимальным значением этого атрибута.

pprint(value, verbose=False):

Фильтр pprint() красиво печатает переменную value. Полезно для отладки.

random(seq):

Фильтр random() возвращает случайный элемент из последовательности seq.

reject(*args, **kwargs):

Фильтр reject() фильтрует последовательность объектов, применяя тест к каждому объекту и отклоняя объекты при успешном выполнении теста.

Если тест не указан, каждый объект будет оцениваться как логическое значение.

Пример использования фильтра reject:

{{ numbers|reject("odd") }}

(n for n in numbers if not test_odd(n))

rejectattr(*args, **kwargs):

Фильтр rejectattr() фильтрует последовательность объектов, применяя тест к указанному атрибуту каждого объекта и отклоняя объекты при успешном завершении теста.

Если тест не указан, то значение атрибута будет оцениваться как логическое.

{{ users|rejectattr("is_active") }}
{{ users|rejectattr("email", "none") }}
(u for user in users if not user.is_active)
(u for user in users if not test_none(user.email))

replace(s, old, new, count=None):

Фильтр replace() возвращает копию строки s со всеми вхождениями old, замененными на new. Аргумент old - это подстрока, которую следует заменить, new - строка замены. Если указан необязательный аргумент count, то заменяются только count первых вхождений:

{{ "Hello World"|replace("Hello", "Goodbye") }}
    -> Goodbye World

{{ "aaaaargh"|replace("a", "d'oh, ", 2) }}
    -> d'oh, d'oh, aaargh

reverse(value):

Фильтр reverse() переворачивает объект или возвращает [итератор][t-iterator], который повторяет его в обратном порядке.

round(value, precision=0, method='common'):

Фильтр round() округляет число до заданной точности. Аргумент precision указывает точность (по умолчанию 0), а method - метод округления (по умолчанию 'common'):

  • 'common': округляет либо вверх, либо вниз.

  • 'ceil': всегда округляет вверх.

  • 'floor': всегда округляет вниз.

{{ 42.55|round }}
    -> 43.0
{{ 42.55|round(1, 'floor') }}
    -> 42.5
{{ 42.55|round|int }}
    -> 43

safe(value):

Фильтр safe() отмечает значение value как безопасное. Это означает, что в [среде Environment][jinja2.Environment] с включенным автоматическим экранированием переменная value не будет экранирована.

select(*args, **kwargs):

Фильтр select() фильтрует последовательность объектов, применяя тест к каждому объекту и выбирая только те объекты, которые прошли его успешно.

Если тест не указан, то каждый объект будет оцениваться как логическое значение.

Пример использования фильтра select:

{{ numbers|select("odd") }}
{{ numbers|select("divisibleby", 3) }}
{{ numbers|select("lessthan", 42) }}
{{ strings|select("equalto", "mystring") }}
(n for n in numbers if test_odd(n))
(n for n in numbers if test_divisibleby(n, 3))

selectattr(*args, **kwargs):

Фильтр selectattr() фильтрует последовательность объектов, применяя тест к указанному атрибуту каждого объекта и выбирая только те объекты, которые прошли его успешно.

Если тест не указан, то значение атрибута будет оцениваться как логическое.

Пример использования фильтра selectattr:

{{ users|selectattr("is_active") }}
{{ users|selectattr("email", "none") }}
(u for user in users if user.is_active)
(u for user in users if test_none(user.email))

slice(value, slices, fill_with=None):

Фильтр slice() делит последовательность на slices списков и возвращает список списков, содержащих эти элементы. Полезно, если нужно создать <div>, содержащий три тега <ul>, представляющих столбцы:

<div class="columnwrapper">
  {%- for column in items|slice(3) %}
    <ul class="column-{{ loop.index }}">
    {%- for item in column %}
      <li>{{ item }}</li>
    {%- endfor %}
    </ul>
  {%- endfor %}
</div>

Аргумент fill_with используется для заполнения отсутствующих значений на последней итерации.

sort(value, reverse=False, case_sensitive=False, attribute=None):

Фильтр sort() сортирует итерацию с помощью функции Python [sorted()][f-sorted].

{% for city in cities|sort %}
    ...
{% endfor %}

Аргументы фильтра sort:

  • reverse – сортировка по убыванию.

  • case_sensitive – при сортировке строк сортирует верхний и нижний регистр отдельно.

  • attribute – при сортировке объектов или словарей используется атрибут или ключ для сортировки. Можно использовать точечную нотацию, например "address.city". Может быть список атрибутов, таких как "age,name".

Сортировка стабильна, она не изменяет относительный порядок элементов, которые сравниваются равными. Это делает возможным цепочку сортировки по различным атрибутам и порядку.

{% for user in users|sort(attribute="name")
    |sort(reverse=true, attribute="age") %}
    ...
{% endfor %}

В качестве ярлыка для связывания, когда направление сортировки одинаково для всех атрибутов, можно передавать список атрибутов, разделенный запятыми.

{% for user users|sort(attribute="age,name") %}
    ...
{% endfor %}

Изменено в версии 2.11.0: Параметр атрибута может представлять собой разделенный запятыми список атрибутов, например "age,name".

string(object):

Фильтр string() преобразует строку в unicode, если она еще не преобразована. Таким образом, строка разметки не преобразуется обратно в unicode.

striptags(value):

Фильтр striptags() удаляет теги SGML/XML и замените соседние пробелы одним пробелом.

sum(iterable, attribute=None, start=0):

Фильтр sum() возвращает сумму последовательности чисел плюс значение аргумента start (по умолчанию 0). Когда последовательность пуста, возвращается значение start.

Также можно суммировать только определенные атрибуты:

Total: {{ items|sum(attribute='price') }}

title(s):

Фильтр title() возвращает версию строки, в которой все слова начинаются с прописных букв, все остальные символы будут строчными.

tojson(value, indent=None):

Фильтр tojson() преобразует структуру в JSON, чтобы ее можно было безопасно использовать в тегах <script>. Фильтр возвращает строку JSON. Обратите внимание, что это доступно в шаблонах через фильтр | tojson, который также пометит результат как безопасный. Благодаря тому, как этот фильтр экранирует определенные символы, результат безопасен, даже если используется вне тегов <script>.

Следующие символы экранируются в строках: <, >,&,'`. Это делает безопасным встраивание таких строк в любое место HTML, за исключением атрибутов, заключенных в двойные кавычки. В этом случае одиночные кавычки для атрибутов или HTML дополнительно экранируют его.

Аргумент indent можно использовать для включения красивой печати и устанавливает количество пробелов, для отступов структуры.

Обратите внимание, что этот фильтр предназначен для использования только в контексте HTML.

trim(value, chars=None):

Фильтр trim() удаляет начальные и конечные символы, по умолчанию - пробелы.

truncate(s, length=255, killwords=False, end='...', leeway=None):

Фильтр truncate() возвращает усеченную копию строки s. Длина указывается в аргументе length, который по умолчанию равен 255. Если значение аргумента killwords=True, то фильтр будет обрезать текст по длине. В противном случае последнее слово будет отброшено. Если текст действительно был усечен, то к нему будет добавлено многоточие (...). Если нужен другой знак, вместо многоточия ..., то можно указать его с помощью аргумента end. Строки, длина которых превышают допустимый предел leeway, усечены не будут.

{{ "foo bar baz qux"|truncate(9) }}
    -> "foo..."
{{ "foo bar baz qux"|truncate(9, True) }}
    -> "foo ba..."
{{ "foo bar baz qux"|truncate(11) }}
    -> "foo bar baz qux"
{{ "foo bar baz qux"|truncate(11, False, '...', 0) }}
    -> "foo bar..."

Свободное пространство leeway по умолчанию в новых версиях Jinja равно 5, а раньше было 0, но его можно перенастроить глобально.

unique(value, case_sensitive=False, attribute=None):

Фильтр unique() возвращает список уникальных элементов из заданного итеративного объекта.

{{ ['foo', 'bar', 'foobar', 'FooBar']|unique|list }}
    -> ['foo', 'bar', 'foobar']

Уникальные элементы выдаются в том же порядке, что и их первое вхождение в итерации, переданной фильтру.

Аргументы фильтра unique:

  • case_sensitive – рассматривает строки верхнего и нижнего регистра как разные.

  • attribute – фильтрует объекты с уникальными значениями для этого атрибута.

upper(s):

Фильтр upper() преобразует значение в верхний регистр.

urlencode(value):

Фильтр urlencode() цитирует данные value для использования в URL или запросе с использованием UTF-8.

Аргумент value – данные для цитирования. Строка будет заключена в кавычки напрямую. Словари dict или последовательности кортежей (key, value) будут объединены в строку запроса.

Если в строке встречаются косые черты, то '/' не заключается в кавычки. HTTP - серверы обрабатывают '/' и '%2F' в путях эквивалентно. Если нужны косые черты в кавычках, то дополнительно используйте фильтр |replace("/", "%2F").

urlize(value, trim_url_limit=None, nofollow=False, target=None, rel=None):

Фильтр urlize() преобразует URL-адреса в виде обычного текста в кликабельные ссылки.

Если вы передадите фильтру дополнительное целое число trim_url_limit, то он сократит URL-адрес до этого числа. Также существует аргумент nofollow, который добавляет rel='nofollow':

{{ mytext|urlize(40, true) }}
    Ссылки сокращаются до 40 символов и определяются с помощью rel='nofollow'

Если указан target, то атрибут target будет добавлен в тег <a>:

{{ mytext|urlize(40, target='_blank') }}

wordcount(s):

Фильтр wordcount() считает слова в этой строке.

wordwrap(s, width=79, break_long_words=True, wrapstring=None, break_on_hyphens=True):

Фильтр wordwrap() форматирует строку до заданной ширины. Существующие символы новой строки обрабатываются как абзацы, которые нужно переносить отдельно.

Аргументы фильтра wordwrap:

  • s – Исходный текст для обертывания

  • width – Максимальная длина для переноса строк.

  • break_long_words – Если слово длиннее ширины, то оно будет разделено и часть перенесется на другую строку.

  • break_on_hyphens – Если слово содержит дефис, оно может быть разделено на несколько строк.

  • wrapstring – Строка для присоединения к каждой обернутой строке. По умолчанию [Environment.newline_sequence][jinja2.Environment].

Изменено в версии 2.11: существующие символы новой строки обрабатываются как отдельные абзацы.

Изменено в версии 2.11: Добавлен параметр break_on_hyphens.

xmlattr(d, autospace=True):

Фильтр xmlattr() создает строку атрибута SGML/XML на основе элементов словаря dict. Все значения, которые не равны ни none, ни undefined, автоматически экранируются:

<ul{{ {'class': 'my_list', 'missing': none,
        'id': 'list-%d'|format(variable)}|xmlattr }}>
...
</ul>

В результате получается что-то вроде этого:

<ul class="my_list" id="list-42">
...
</ul>

Как видно из примера, если фильтр что-то возвращает, то он автоматически добавляет пробел перед элементом, если только аргумент autospace не равен False.

PreviousЧисло у рядок, slicesNextre

Last updated 11 months ago

Дополнительные сведения смотрите в разделе "".

Фильтр dictsort() сортирует и возвращает парные (key, value). Так как изначально словари Python не отсортированы, этот фильтр можно использовать, чтобы упорядочить их по ключу или значению:

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

Фильтр float() преобразует значение value в . Если преобразование невозможно, то возвращается 0,0. Можно изменить это значение по умолчанию.

Фильтр format() применяет заданные значения к строке формата , например string % values.

В большинстве случаев, в шаблонах, удобнее и эффективнее использовать оператор % или .

Фильтр groupby() группирует последовательность объектов по атрибуту с помощью Python . Атрибут может использовать точечную нотацию для вложенного доступа, например 'address.city'. В отличие от Python itertools.groupby(), значения сортируются первыми, поэтому для каждого уникального значения возвращается только одна группа.

Фильтр int() преобразует значение в . Если преобразование невозможно, то возвращается 0. Можно изменить это значение по умолчанию. Можно также переопределить базу по умолчанию (10) аргументом base, который обрабатывает ввод с такими префиксами, как 0b, 0o и 0x для оснований 2, 8 и 16 соответственно. База игнорируется для десятичных чисел и не строковых значений.

Фильтр join() возвращает строку, которая является конкатенацией строк в value.

Примечание: не работает с . Его можно явно преобразовать в список:

Аналогично , такому как:

Работает подобно , например:

Работает подобно , например:

Обратите внимание, что даже при округлении до точности 0 возвращается число . Если необходим получить , то пропустите его через :

Работает подобно , например:

Работает подобно , например:

Фильтр представляет собой обертку для [urllib.parse.quote()][urllib.parse.quote], если value это строка или [urllib.parse.urlencode()][urllib.parse.urlencode] для или последовательности.

Общий синтаксис шаблонов jinja2
словарь
кортежи
Markup
число с плавающей запятой
в стиле printf
str.format()
itertools.groupby()
целое число
последовательности
генераторами
выражению-генератора
выражению-генератора
выражению-генератора
float
целое число
фильтр int
выражению-генератора
выражению-генератора
словаря