Фильтры

Фильтр применяется к переменной через «|» внутри фигурных скобок. В одной конструкции можно использовать несколько фильтров — они применяются по очереди слева направо.

Фильтры для строковых переменных

  1. «upper» - преобразует текст в верхний регистр
{{ filter_ex1 }} --> {{ filter_ex1 | upper }} 

Результат:
текст -> ТЕКСТ

  1. «lower» - преобразует текст в нижний регистр
{{ filter_ex2 }} --> {{ filter_ex2 | lower }}

Результат:
ТЕКСТ -> текст

  1. «upper_first» или «capitalize» - делает первую букву заглавной
{{ filter_ex1 }} --> {{ filter_ex1 | upper_first }}

Результат:
текст -> Текст

  1. «lower_first» - делает первую букву строчной
{{ filter_ex2 }} --> {{ filter_ex2 | lower_first }}

Результат:
ТЕКСТ -> тЕКСТ

  1. «trim» - удаляет пробелы в начале и конце строки
"{{ filter_ex3 }}" --> "{{ filter_ex3 | trim }}"

Результат:
« текст » -> «текст»

  1. «truncate(x)» - обрезает строку до длины x
{{ filter_ex1 }} --> {{ filter_ex1 | truncate(3) }}

Результат:
текст -> текст

  1. «replace('old', 'new')» - заменяет часть текста «old» на часть текста «new»
{{ filter_ex1 }} --> {{ filter_ex1 | replace('кст', 'пло') }}

Результат:
текст -> тепло

  1. «ip», «rp», «dp», «vp», «tp», «pp» - выводят текст в соответствующем падеже (в переменной нужно предварительно настроить падежи, см. «Настройка падежей»)
{{ filter_ex1 | ip }} - Именительный
{{ filter_ex1 | rp }} - Родительный
{{ filter_ex1 | dp }} - Дательный
{{ filter_ex1 | vp }} - Винительный
{{ filter_ex1 | tp }} - Творительный
{{ filter_ex1 | pp }} - Предложный

текст - Именительный
текста - Родительный
тексту - Дательный
текст - Винительный
текстом - Творительный
тексте - Предложный

  1. «urlencode» - кодирует строку для использования в URL
{{ filter_ex1 }} --> {{ filter_ex1 | urlencode }}

Результат:
текст -> %D1%82%D0%B5%D0%BA%D1%81%D1%82

  1. «wordcount» - подсчитывает количество слов в строке
{{ filter_ex1 }} --> {{ filter_ex1 | wordcount }}

Результат:
текст -> 1

  1. «nl2br» - заменяет переводы строк на теги

    Может использоваться для размещения многострочного текста в ячейке таблицы
|До|
|---|
|{{ filter_ex4 }}|

|После|
|---|
|{{ filter_ex4 | nl2br }}|

Результат:

  1. «striptags» - удаляет HTML-теги из строки
{{ filter_ex4 }} --> {{ filter_ex4 | striptags }}

Результат:
Текст
в несколько
строк -> Текст в несколько строк

Фильтры для списков

  1. «first» - отображает первый элемент списка
{{ list_example | first }}

Результат:
красный

  1. «last» - отображает последний элемент списка
{{ list_example | last }}

Результат:
фиолетовый

  1. «join("Х")» - соединяет список в строку, разделяя элементы через Х
{{ list_example | join(", ") }}

Результат:
красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый

  1. «sort» - сортирует список по алфавиту
{{ list_example | sort | join(", ") }}

Результат:
голубой, желтый, зеленый, красный, оранжевый, синий, фиолетовый

  1. «unique» - удаляет дублирующиеся элементы из списка
{{ filter_list_ex1 | join }} --> {{ filter_list_ex1 | unique | join }}

Результат:
уунууиииннуниукннакклунинуил -> уникал

Числовые фильтры

{{ number_example }} -> {{ number_example | abs }}

{{ number_example }} -> {{ number_example | round(2) }}

Результат:
-3.14159 -> 3.14159

-3.14159 -> -3.14

Фильтры для даты

  1. «date(Х)» - форматирует дату по образцу Х
{{ date_example }} -> {{ date_example | date("YYYY: DD-MM") }}
{{ date_example }} -> {{ date_example | date("DD MMMM YYYY года") }}

Результат:
16.04.2077 -> 2077: 16-04
16.04.2077 -> 16 апреля 2077 года

Сокращенные версии форматов:

  • date('iso') = date('YYYY-MM-DD')
  • date('long') = date('D MMMM YYYY')
  1. «date_add(A=X)» - сдвигает дату на X дней, месяцев или лет (A — days, months или years; X может быть отрицательным)
{{ date_example }} -> {{ date_example | date_add(months = 2, years = -30) }}

Результат:
16.04.2077 -> 16.06.2047

  1. «date_diff(X)» - показывает, сколько дней прошло от даты X до даты, к которой применен фильтр
Начало: {{ date }} 
Конец: {{ date_example }}
Прошло: {{ date_example | date_diff(date) }} дней

Результат:
Начало: 15.06.1999
Конец: 16.04.2077
Прошло: 28430 дней

Фильтры для нескольких типов переменных

  1. «reverse» - переворачивает строку или список
    Тип переменных: string, list
{{ string_example | reverse }}
{{ list_example | reverse | join(", ") }}

Результат:
!dlrow ,olleH
фиолетовый, синий, голубой, зеленый, желтый, оранжевый, красный

  1. «length» - выводит число элементов списка или число символов в остальных переменных
    Тип переменных: все
Количество символов в строке - {{ string_example | length }}
Количество элементов в списке - {{ list_example | length }}

Результат:
Количество символов в строке - 13
Количество элементов в списке - 7

  1. «string» - преобразует значение в строку
    Тип переменных: все

  2. «int» - преобразует значение в целое число
    Тип переменных: все (значение должно иметь вид целого числа)

  3. «float» - преобразует значение в дробное число
    Тип переменных: все (значение должно иметь вид действительного числа)

  4. «list» - преобразует значение в список
    Тип переменных: string (строки разбиваются по символам)
    Также может применяться для формирования списков объектов (подробнее см. «Создание списка объектов»)

  5. «default(Х)» - выводит «Х», если переменная не заполнена
    Тип переменных: все

{{ empty_string }} -->
{{ empty_string | default("Значение не заполнено") }}

Результат:
->
Значение не заполнено

  1. «escape» - экранирует HTML символы в строке
    Тип переменных: string, list, nested_list
{{ filter_ex5 }} --> {{ filter_ex5 | escape }}

Результат:
Hello, world! -> <b>Hello, world!</b>

  1. «safe» - помечает строку как безопасную (не экранирует HTML)
    Тип переменных: string, list, nested_list
{{ filter_ex5 }} --> {{ filter_ex5 | safe }}

Результат:
Hello, world! -> Hello, world!

Применение фильтров к строке

Фильтры можно применять не только к переменным, но и прямо к числам и тексту (текст берется в кавычки):

{{ "Оля" }} --> {{ "Оля" | reverse | lower | upper_first }}
{{ 3.14159 }} --> {{ 3.14159 | round(2) }}

Результат:
Оля -> Яло
3.14159 -> 3.14