---
metadata:
  - name: generator
    content: Diplodoc Platform v5.62.0
style:
  - _assets/styles/custom.css
  - _assets/fonts-golos-text.css
  - _assets/styles/hero-gradient.css
  - _assets/styles/hero-decoration.css
script:
  - _assets/scripts/latex-trust.js
description: Руководство пользователя (новая версия) - Фильтры
title: Фильтры
vcsPath: sintaksis-shablonov/peremennye-i-filtry/filtry.md
alternate:
  - href: sintaksis-shablonov/peremennye-i-filtry/filtry.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    rel: describedby
theme: _assets/style/theme.css
---

# Фильтры

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

```jinja
{{ filter_ex1 }} --> {{ filter_ex1 | upper }} 
```


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

2. «lower» - преобразует текст в нижний регистр

```jinja
{{ filter_ex2 }} --> {{ filter_ex2 | lower }}
```


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

3. «upper_first» или «capitalize» - делает первую букву заглавной

```jinja
{{ filter_ex1 }} --> {{ filter_ex1 | upper_first }}
```


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

4. «lower_first» - делает первую букву строчной

```jinja
{{ filter_ex2 }} --> {{ filter_ex2 | lower_first }}
```


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

5. «trim» - удаляет пробелы в начале и конце строки

```jinja
"{{ filter_ex3 }}" --> "{{ filter_ex3 | trim }}"
```


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

6. «truncate(x)» - обрезает строку до длины x

```jinja
{{ filter_ex1 }} --> {{ filter_ex1 | truncate(3) }}
```


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

7. «replace('old', 'new')» - заменяет часть текста «old» на часть текста «new»

```jinja
{{ filter_ex1 }} --> {{ filter_ex1 | replace('кст', 'пло') }}
```


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

8. «ip», «rp», «dp», «vp», «tp», «pp» - выводят текст в соответствующем падеже (в переменной нужно предварительно настроить падежи, см. [«Настройка падежей»](https://docs.gost-on.ru/guide/dannye-proekta-peremennye-i-obekty/znacheniia-na-glavnoi-stranitse.html#nastrojka-padezhej))

```jinja
{{ filter_ex1 | ip }} - Именительный
{{ filter_ex1 | rp }} - Родительный
{{ filter_ex1 | dp }} - Дательный
{{ filter_ex1 | vp }} - Винительный
{{ filter_ex1 | tp }} - Творительный
{{ filter_ex1 | pp }} - Предложный
```


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

9. «urlencode» - кодирует строку для использования в URL

```jinja
{{ filter_ex1 }} --> {{ filter_ex1 | urlencode }}
```


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

10. «wordcount» - подсчитывает количество слов в строке

```jinja
{{ filter_ex1 }} --> {{ filter_ex1 | wordcount }}
```


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

11. «nl2br» - заменяет переводы строк на теги <br>
Может использоваться для размещения многострочного текста в ячейке таблицы

```jinja
|До|
|---|
|{{ filter_ex4 }}|

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


**Результат:**
![](_assets/content-images/41a76d09c0caf5b0.png)

12. «striptags» - удаляет HTML-теги из строки

```jinja
{{ filter_ex4 }} --> {{ filter_ex4 | striptags }}
```


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

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

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

```jinja
{{ list_example | first }}
```


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

2. «last» - отображает последний элемент списка

```jinja
{{ list_example | last }}
```


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

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

```jinja
{{ list_example | join(", ") }}
```


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

4. «sort» - сортирует список по алфавиту

```jinja
{{ list_example | sort | join(", ") }}
```


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

5. «unique» - удаляет дублирующиеся элементы из списка

```jinja
{{ filter_list_ex1 | join }} --> {{ filter_list_ex1 | unique | join }}
```


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

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

```jinja
{{ number_example }} -> {{ number_example | abs }}

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


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

-3.14159 -> -3.14


## Фильтры для даты
1. «date(Х)» - форматирует дату по образцу Х

```jinja
{{ 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')

2. «date_add(A=X)» - сдвигает дату на X дней, месяцев или лет (A — days, months или years; X может быть отрицательным)

```jinja
{{ date_example }} -> {{ date_example | date_add(months = 2, years = -30) }}
```


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

3. «date_diff(X)» - показывает, сколько дней прошло от даты X до даты, к которой применен фильтр

```jinja
Начало: {{ date }} 
Конец: {{ date_example }}
Прошло: {{ date_example | date_diff(date) }} дней
```


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

## Фильтры для нескольких типов переменных
1. «reverse» - переворачивает строку или список
Тип переменных: string, list

```jinja
{{ string_example | reverse }}
{{ list_example | reverse | join(", ") }}
```


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

2. «length» - выводит число элементов списка или число символов в остальных переменных
Тип переменных: все

```jinja
Количество символов в строке - {{ string_example | length }}
Количество элементов в списке - {{ list_example | length }}
```


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

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

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

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

6. «list» - преобразует значение в список
Тип переменных: string (строки разбиваются по символам)
Также может применяться для формирования списков объектов (подробнее см. [«Создание списка объектов»](https://docs.gost-on.ru/guide/sintaksis-shablonov/obekty-v-shablonakh.html#sozdanie-spiska-obuektov))

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

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


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

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

```jinja
{{ filter_ex5 }} --> {{ filter_ex5 | escape }}
```


**Результат:**
<b>Hello, world!</b> -> &lt;b&gt;Hello, world!&lt;/b&gt;

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

```jinja
{{ filter_ex5 }} --> {{ filter_ex5 | safe }}
```


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

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

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


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