Добавляет аргумент к обрабатываемому значению.
Например:
{{ value|add:"2" }}
Если value равно 4, результатом действия фильтра будет 6.
Добавлено с 1.2.
Первым делом данный фильтр пытается привести оба значения к целым числам. Если это не удается, то выполняется обычное сложение. Для некоторых типов данных это удается (строки, списки и т.д.), для других нет. В случае неудачи результатом будет пустая строка.
Например, если мы применим фильтр:
{{ first|add:second }}
где first содержит список [1, 2, 3], а second — список [4, 5, 6], результатом будет список [1, 2, 3, 4, 5, 6].
Замечание
Имейте в виду, что если оба значения представляют собой строки, которые приводятся к целым числам, то будет выполнено сложение, а не конкатенация (см. первый пример).
Добавляет слэши перед кавычками. В частности, полезно для экранирования строк в формате CSV.
Пример:
{{ value|addslashes }}
Если value равно I'm using Django, фильтр выведет I\'m using Django.
Делает первый символ переменной заглавным.
Например:
{{ value|capfirst }}
Если value равно django, фильтр выведет Django.
Центрирует значение в поле данной ширины.
Например:
"{{ value|center:"15" }}"
Если value равно "Django", результатом действия фильтра будет " Django ".
Удаляет все вхождения переданного аргумента из обрабатываемого значения.
Например:
{{ value|cut:" "}}
Если value равно "String with spaces", фильтр выведет "Stringwithspaces".
Форматирует дату в заданном формате.
Формат может быть задан предопределенными константами: DATE_FORMAT, DATETIME_FORMAT, SHORT_DATE_FORMAT либо SHORT_DATETIME_FORMAT, а также строкой формата (см. тег now). Имейте в виду, что действие предопределенных констант может зависить от локали.
Например:
{{ value|date:"D d M Y" }}
Если value является объектом datetime (т.е. результатом функции datetime.datetime.now()), фильтр выведет 'Wed 09 Jan 2008'.
Другой пример:
Допустим, параметр USE_L10N равен True, а LANGUAGE_CODE, например, "es", тогда результатом действия фильтра:
{{ value|date:"SHORT_DATE_FORMAT" }}
будет строка "09/01/2008" (т.к. "SHORT_DATE_FORMAT" в локали es использует строку формата "d/m/Y").
Если формат не указан:
{{ value|date }}
то будет использована строка формата, определенная в параметре DATE_FORMAT, без учета локализации.
Добавлено в 1.2.
Текущая локаль теперь влияет на предопределенные форматы.
Если значение вычисляется как False, выводит указанный аргумент как значение по умолчанию. В противном случае выводит само значение.
Например:
{{ value|default:"nothing" }}
Если value равно "" (пустая строка), фильтр выведет nothing.
Если (и только если) значение равно None, выводит указанный аргумент как значение по умолчанию. В противном случае выводит само значение.
Если значение является пустой строкой, аргумент по умолчанию не будет использован. Для замены пустых строк используйте фильтр default.
Например:
{{ value|default_if_none:"nothing" }}
Если value равно None, фильтр выведет строку "nothing".
Принимает список словарей и возвращает список, отсортированный по ключу, указанному в качестве аргумента.
Например:
{{ value|dictsort:"name" }}
Если value является списком:
[
{'name': 'zed', 'age': 19},
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
]
то такой фильтр вернет список:
[
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
{'name': 'zed', 'age': 19},
]
Принимает список словарей и возвращает список, отсортированный в обратном порядке по ключу, указанному в качестве аргумента. Действует аналогично предыдущему фильтру, но полученный список будет в обратном порядке.
Возвращает True, если значение делится на указанный аргумент.
Например:
{{ value|divisibleby:"3" }}
Если value равно 21, фильтр выведет True.
Заменяет символы, используемые в HTML, на соответствующие HTML-сущности, а именно:
< заменяется на <;
> заменяется на >;
' (одинарная кавычка) заменяется на ';
" (двойная кавычка) заменяется на ";
& заменяется на &.
Замена производится непосредственно перед выводом результата, поэтому положение escape в цепочке фильтров не имеет значения: он всегда будет применен последним. Если порядок применения этого фильтра важен, используйте фильтр force_escape.
Применение фильтра escape к переменной, которая будет экранирована автоматически, в любом случае приведет к однократному экранированию. Таким образом, применение этого фильтра безопасно. Если требуется неоднократная замена HTML-символов, используйте фильтр force_escape.
Изменено в 1.0.
В связи с автоматическим экранированием поведение этого фильтра несколько изменено. Замены осуществляются только один раз, после применения всех имеющихся фильтров (расположенных как до, так и после данного фильтра).
Добавлено в 1.0.
Экранирует символы для использования в JavaScript-строках. Этот фильтр не делает строку безопасной для HTML, а лишь защищает от синтаксических ошибок при генерации кода JavaScript/JSON.
Например:
{{ value|escapejs }}
Если value равно "testing\r\njavascript \'string" <b>escaping</b>", в результате получится "testing\\u000D\\u000Ajavascript \\u0027string\\u0022 \\u003Cb\\u003Eescaping\\u003C/b\\u003E".
Форматирует значение в виде «человекопонятного» размера файла (т.е. 13 KB, 4.1 MB, 102 bytes, и т.п.).
Например:
{{ value|filesizeformat }}
Если value равно 123456789, фильтр выведет 117.7 MB.
Возвращает первый элемент списка.
Например:
{{ value|first }}
Если value содержит список ['a', 'b', 'c'], результатом действия фильтра будет 'a'.
Изменено с 1.0.
Используется редко, т.к. амперсанды экранируются автоматически. Подробнее см. escape.
Заменяет амперсанды на сущности &.
Например:
{{ value|fix_ampersands }}
Если value равно Tom & Jerry, будет выведеноTom & Jerry.
При использовании без аргумента выводит дробное число с одним знаком после запятой — если имеется дробная часть. Например:
Таблица F.3. Без аргументов
| value | Шаблон | Вывод |
|---|---|---|
| 34.23234 | {{ value|floatformat }} | 34.2 |
| 34.00000 | {{ value|floatformat }} | 34 |
| 34.26000 | {{ value|floatformat }} | 34.3 |
Если указан целочисленный положительный аргумент, floatformat округляет число до указанного числа знаков после запятой и выводит их все. Например:
Таблица F.4. Положительный аргумент
| value | Шаблон | Вывод |
|---|---|---|
| 34.23234 | {{ value|floatformat:3 }} | 34.232 |
| 34.00000 | {{ value|floatformat:3 }} | 34.000 |
| 34.26000 | {{ value|floatformat:3 }} | 34.260 |
Если аргумент отрицательный, то floatformat округляет число до указанного числа знаков после запятой и выводит их все, если имеется дробная часть. Например:
Таблица F.5. Отрицательный аргумент
| value | Шаблон | Вывод |
|---|---|---|
| 34.23234 | {{ value|floatformat:-3 }} | 34.232 |
| 34.00000 | {{ value|floatformat:-3 }} | 34 |
| 34.26000 | {{ value|floatformat:-3 }} | 34.260 |
Вызов floatformat без аргумента эквивалентен вызову с аргументом -1.
Добавлено с 1.0.
Экранирует HTML-символы в строке (подробнее см. описание фильтра escape). Применяется немедленно и возвращает новую, экранированную строку, что полезно в тех редких случаях, кога требуется неоднократное экранирование или применение ряда фильтров к уже экранированной строке. Обычно же достаточно фильтра escape.
Принимая аргумент-число, возвращает цифру соответствующего порядка: последнюю цифру, если аргумент равен 1, предпоследнюю, если 2 и т.д. Если значение или аргумент не являются целыми числами или аргумент меньше 1, не производит никакого эффекта.
Например:
{{ value|get_digit:"2" }}
Если value равно 123456789, фильтр вернет 8.
Преобразует IRI (Internationalized Resource Identifier) в строку, которую можно включить в URL. Это полезно в случае, если в предполагаемом адресе содержатся символы, не входящие в набор ASCII.
Применение этого фильтра для строк, пропущенных через фильтр urlencode, безопасно.
Например:
{{ value|iriencode }}
Если value равно "?test=1&me=2", результат будет "?test=1&me=2".
Соединяет элементы списка в строку, используя аргумент как разделитель (аналогично Python-функции str.join(list)).
Например:
{{ value|join:" // " }}
Если value является списком ['a', 'b', 'c'], фильтр выведет строку "a // b // c".
Добавлено в 1.0.
Возвращает последний элемент списка.
Например:
{{ value|last }}
Если value является списком ['a', 'b', 'c', 'd'], фильтр выведет строку "d".
Возвращает длину переменной. Работает для как для строк, так и для списков.
Например:
{{ value|length }}
Если value является списком ['a', 'b', 'c', 'd'], фильтр выведет 4.
Возвращает True, если длина значения равна указанному аргументу, в противном случае возвращает False.
Например:
{{ value|length_is:"4" }}
Если value является списком ['a', 'b', 'c', 'd'], фильтр выведет True.
Заменяет переносы строк в простом тексте на соответствующий HTML; новая строка заменяется на тег <br />, а новая строка с последующей пустой строкой — тегом </p>.
Например:
{{ value|linebreaks }}
Если value равно Joel\nis a slug, фильтр выведет <p>Joel<br />is a slug</p>.
Преобразует все переносы строк в тег <br />.
Например:
{{ value|linebreaksbr }}
Если value равно Joel\nis a slug, фильтр выведет Joel<br />is a slug.
Выводит текст с номерами строк.
Например:
{{ value|linenumbers }}
Если value равно:
one
two
three
фильтр выведет:
1. one
2. two
3. three
Выравнивает текст влево в поле заданной ширины. Аргумент: ширина поля.
Например:
"{{ value|ljust:"10" }}"
Если value равно Django, результат будет "Django ".
Приводит строку к нижнему регистру.
Например:
{{ value|lower }}
Если value равно Still MAD At Yoko, фильтр выведет still mad at yoko.
Возвращает список, полученный из значения обрабатываемой переменной. Целое число будет преобразовано в список цифр, строка — в список букв.
Например:
{{ value|make_list }}
Если value является строкой "Joel", результатом будет список [u'J', u'o', u'e', u'l']. Если value является числом 123, результатом будет список [1, 2, 3].
Преобразует телефонный номер (в т.ч. содержащий буквы) в числовой формат.
Входное значение не проверяется на правильность формата — любая строка будет преобразована.
Например:
{{ value|phone2numeric }}
Если value равно 800-COLLECT, фильтр вернет 800-2655328.
Возвращает окончание множественного числа, если значение не равно 1. По умолчанию используется окончание 's'.
Пример:
You have {{ num_messages }} message{{ num_messages|pluralize }}.
Если num_messages равно 1, фильтр выведет You have 1 message.
Если num_messages равно 2, фильтр выведет You have 2 messages.
Если множественное число требует другого окончания (не 's'), укажите его в качестве аргумента фильтра.
Пример:
You have {{ num_walruses }} walrus{{ num_walruses|pluralize:"es" }}.
Если множественное число изменяет окончание слова, укажите через запятую окончание единственного числа и окончание множественного числа (фильтр заменит первое на второе).
Пример:
You have {{ num_cherries }} cherr{{ num_cherries|pluralize:"y,ies" }}.
Возвращает случайный элемент в списке.
Например:
{{ value|random }}
Если value является списком ['a', 'b', 'c', 'd'], результатом может быть "b".
Удаляет [X]HTML-теги, перечисленные в строке-аргументе через пробел.
Например:
{{ value|removetags:"b span"|safe }}
Если value равно "<b>Joel</b> <button>is</button> a <span>slug</span>", фильтр выведет "Joel <button>is</button> a slug".
Выравнивает текст вправо в поле заданной ширины. Аргумент: ширина поля.
Например:
"{{ value|rjust:"10" }}"
Если value равно Django, фильтр выведет " Django".
Строка, отмеченная этим фильтром, не будет экранирована перед выводом. Если автоматическое экранирование отключено, эффекта не имеет.
Применяет фильтр safe к каждому элементу последовательности. Полезно при использовании других фильтров, воздействующих на последовательности, таких как join. Например:
{{ some_list|safeseq|join:", " }}
В этом случае нельзя использовать фильтр safe, т.к. он вначале превратит переменную в строку, а не пометит каждый элемент последовательности.
Возвращает срез списка.
Используется синтаксис Python для срезов. Ознакомиться с ним можно на странице http://diveintopython.org/native_data_types/lists.html#odbchelper.list.slice.
Пример:
{{ some_list|slice:":2" }}
Если some_list равно ['a', 'b', 'c'], фильтр выведет ['a', 'b'].
Приводит переменную к нижнему регистру, оставляет только буквы, цифры и символы подчеркивания, затем преобразует пробелы в дефисы. Начальные и завершающие пробелы удаляются.
Например:
{{ value|slugify }}
Если value равно "Joel is a slug", фильтр выведет "joel-is-a-slug".
Форматирует переменную в соответствии с переданным аргументом, представляющим собой спецификатор формата. В спецификаторе используется синтаксис Python для строк формата, за исключением служебного символа «%».
Документацию по форматированию строк в Python см. на http://docs.python.org/library/stdtypes.html#string-formatting-operations
Например:
{{ value|stringformat:"s" }}
Если value равно "Joel is a slug", фильтр выведет "Joel is a slug".
Удаляет все [X]HTML-теги.
Например:
{{ value|striptags }}
Если value равно "<b>Joel</b> <button>is</button> a <span>slug</span>", фильтр вернет "Joel is a slug".
Выводит время в указанном формате.
Формат может быт задан преопределенной константой TIME_FORMAT (зависит от локальных настроек) либо пользовательским форматом (см. тег now).
По понятным причинам данный фильтр принимает только формат, определяющий вывод времени, а не даты. Для вывода даты используйте фильтр date.
Например:
{{ value|time:"H:i" }}
Если value эквивалентно datetime.datetime.now(), фильтр выведет строку "01:23".
Еще один пример:
Допустим, параметр USE_L10N равен True, а LANGUAGE_CODE, например, "de", тогда результатом фильтра:
{{ value|date:"TIME_FORMAT" }}
будет строка "01:23:00" (т.к. "TIME_FORMAT" в локали de использует строку формата "H:i:s").
Если формат не указан:
{{ value|date }}
то будет использована строка формата, определенная в параметре TIME_FORMAT, без учета локализации.
Добавлено в 1.2.
Текущая локаль теперь влияет на предопределенные форматы.
Форматирует дату в виде периода времени, прошедшего с того момента (например, «4 days, 6 hours»).
Принимает необязательный аргумент, содержащий дату окончания периода (без этого аргумента окончанием периода считается сейчас). Например, если blog_date содержит дату, указывающую на полночь 1 июня 2006 года, а comment_date указывает на 08:00 1 июня 2006 года, то {{ blog_date|timesince:comment_date }} вернет «8 hours».
Сравнение дат, для одной из которых смещение указано, а для другой не указано, вернет пустую строку.
Результат округляется до целого числа полных минут. Если начальная дата периода позже конечной, результат будет «0 minutes».
Аналогично timesince, но вычисляет период до указанного момента. Например, если сегодня 1 июня 2006 года, а conference_date указывает на дату 29 июня 2006 года, то {{ conference_date|timeuntil }} вернет «4 weeks».
Принимает необязательный аргумент, содержащий дату начала периода (вместо сейчас). Например, если from_date указывает на 22 июня 2006, то {{ conference_date|timeuntil:from_date }} вернет «1 week».
Сравнение дат, для одной из которых смещение указано, а для другой не указано, вернет пустую строку.
Результат округляется до целого числа полных минут. Если конечная дата периода раньше начальной, результат будет «0 minutes».
Делает заглавными первые буквы слов в строке.
Например:
{{ value|title }}
Если value равно "my first post", фильтр выведет "My First Post".
Обрезает строку после указанного числа слов. Аргумент: Максимальное число выводимых слов.
Например:
{{ value|truncatewords:2 }}
Если value равно "Joel is a slug", фильтр выведет "Joel is ...".
Аналогично truncatewords, но с учетом HTML-тегов. Закрывает все теги, не закрытые к моменту усечения строки.
Работает медленнее, чем truncatewords, поэтому рекомендуется использовать только для обработки HTML-текстов.
Например:
{{ value|truncatewords_html:2 }}
Если value равно "<p>Joel is a slug</p>", фильтр выведет "<p>Joel is ...</p>".
Превращает список списков (любой вложенности) в HTML-список (БЕЗ обрамляющего тега <ul>).
Измененов в 1.0.
Добавлена поддержка более простого формата списка.
Список должен быть правильно сформирован. Например, если var содержит список ['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']], то {{ var|unordered_list }} вернет:
<li>States
<ul>
<li>Kansas
<ul>
<li>Lawrence</li>
<li>Topeka</li>
</ul>
</li>
<li>Illinois</li>
</ul>
</li>
Примечание: поддержка предыдущего формата (более строгого, но точного) сохранена: ['States', [['Kansas', [['Lawrence', []], ['Topeka', []]]], ['Illinois', []]]].
Приводит строку к верхнему регистру.
Например:
{{ value|upper }}
Если value равно "Joel is a slug", фильтр выведет "JOEL IS A SLUG".
Экранирует строку для использования в адресе URL.
Например:
{{ value|urlencode }}
Если value является строкой "http://www.example.org/foo?a=b&c=d", фильтр вернет "http%3A//www.example.org/foo%3Fa%3Db%26c%3Dd".
Заменяет ссылки в обычном тексте на активные HTML-ссылки.
Имейте в виду, что применение фильтра urlize к тексту, в котором уже содежится HTML-разметка, может привести к неправильным результатам. Применяйте этот фильтр только к простому тексту.
Например:
{{ value|urlize }}
Если value является строкой "Check out www.djangoproject.com", результатом будет строка "Check out <a href="http://www.djangoproject.com">www.djangoproject.com</a>".
Заменяет ссылки в обычном тексте на активные HTML-ссылки, усекая их текст до указанного числа символов.
Как и urlize_, применяется только к простому тексту. Аргумент: Максимальная длина текста ссылки.
Например:
{{ value|urlizetrunc:15 }}
Если value является строкой "Check out www.djangoproject.com", результатом будет строка 'Check out <a href="http://www.djangoproject.com">www.djangopr...</a>'.
Возвращает число слов.
Например:
{{ value|wordcount }}
Если value равно "Joel is a slug", фильтр выведет 4.
Переносит слова с учетом указанной длины строки. Аргумент: число, задающее длину строки.
Например:
{{ value|wordwrap:5 }}
Если value равно Joel is a slug, фильтр вернет:
Joel
is a
slug
Превращает значения true, false и (необязательно) None в соответствующую строку, указанную в аргументе:
Таблица F.6. Пример
| Значение | Аргумент | Результат |
|---|---|---|
| True | да, нет, может быть | да |
| False | да, нет, может быть | нет |
| None | да, нет, может быть | может быть |
| None | да, нет | нет (если значение для None не указано, берёт строку для False) |
| Пред. | Уровень выше | След. |
| Приложение F. Встроенные шаблонные теги и фильтры | Начало | Дополнительные библиотеки тегов и фильтров |
2 comments | Make a comment
"{{ value|ljust:"10" }}"
Если value равно Django, результат будет "Django ".
Как раз интересует такой случай.
html "обрезает" несколько пробелов подряд. Как тогда использовать такой фильтр?
<pre>. Никогда не пользовался. Это дело верстальщика что бы все ровное было. Контент не должен изменяться что бы ширина была одинаковая у строки.