Django_-_podrobnoe_rukovodstvo
.pdf500 |
Приложение E. Встроенные шаблонные теги и фильтры |
center
Центрирует значение в поле заданной ширины.
cut
Удаляет все значения arg из заданной строки, например:
{{ value|cut:” “}}
Если value равно “Строка с пробелами”, то будет выведено “Строкаспробелами”.
date
Форматирует дату согласно заданной строке формата (спецификаторы форматы такие же, как в теге {% now %}). Например:
{{ value|date:”D d M Y” }}
Если value – объект типа datetime (например, результат, возвращенный методом datetime.datetime.now()), то будет выведена строка вида ‘Wed 09 Jan 2008’.
Если строка формата не задана, то по умолчанию используется значение параметра DATE_FORMAT:
{{ value|date }}
default
Если поданное на вход фильтра значение равно False, взять значение аргумента, иначе само фильтруемое значение. Например:
{{ value|default:”nothing” }}
Если value равно “” (пустая строка), будет выведено nothing.
default_if_none
Если (и только если) значение value равно None, взять значение аргумента, в противном случае – значение, поданное на вход фильтра.
Специально отметим, что если на вход фильтра будет подана пустая строка, то значение аргумента не используется. Для подмены пустых строк используйте фильтр default. Например:
{{ value|default_if_none:”nothing” }}
Если value равно None, будет выведено nothing.
dictsort
Принимает список словарей и возвращает его отсортированным по заданному в аргументе ключу, например:
Справочник по встроенным фильтрам |
501 |
{{ 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},
]
dictsortreversed
Принимает список словарей и возвращает его отсортированным в обратном порядке по заданному в аргументе ключу. Работает точно так же, как предыдущий фильтр, но сортирует в обратном порядке.
divisibleby
Возвращает True, если значение делится на аргумент без остатка. Например:
{{ value|divisibleby:”3” }}
Если value равно 21, то результат равен True.
escape
Экранирует HTML-разметку. Точнее, производит следующие замены:
•• < преобразуется в <
•• > преобразуется в >
•• ' (одиночная кавычка) преобразуется в '
•• « (двойная кавычка) преобразуется в "
•• & преобразуется в &
Экранирование применяется только при выводе строки, поэтому не имеет значения, в каком месте цепочки фильтров стоит escape – он всегда применяется так, будто указан последним. Если требуется применить экранирование немедленно, используйте фильтр force_escape.
Применение escape к переменной, которая и без того подвергается автоматическому экранированию, не приводит к двойному экранированию. Поэтому этот фильтр можно без опасений использовать в режиме автоматического экранирования. Если требуется применить процеду-
502 |
Приложение E. Встроенные шаблонные теги и фильтры |
ру экранирования к одному и тому же значению несколько раз, используйте фильтр force_escape.
escapejs
Экранирует символы в строках, предназначенных для использования в JavaScript-сценариях. Это не делает строку безопасной для включения в HTML-разметку, но предотвращает синтаксические ошибки при генерации JavaScript-сценариев или JSON-документов по шаблону.
filesizeformat
Представляет величину размера файла в привычном формате (‘13 KB’, ‘4.1 MB’, ‘102 bytes’ и т. д.). Например:
{{ value|filesizeformat }}
Если value равно 123456789, то будет выведено 117.7 MB.
first
Возвращает первый элемент списка, например:
{{ value|first }}
Если значением value является список [‘a’, ‘b’, ‘c’], то будет выведено ‘a’.
fix_ampersands
Заменяет символы амперсанда компонентами &. Например:
{{ value|fix_ampersands }}
Если value равно Tom & Jerry, то будет выведено Tom & Jerry.
floatformat
При использовании без аргумента округляет число с плавающей запятой до числа с одним знаком после запятой (но только если дробная часть имеется). См. табл. E.4.
Таблица E.4. Примеры работы фильтра floatformat
Значение |
Шаблон |
Выводится |
|
|
|
34.23234 |
{{ value|floatformat }} |
34.2 |
34.00000 |
{{ value|floatformat }} |
34 |
34.26000 |
{{ value|floatformat }} |
34.3 |
|
|
|
Если задан числовой аргумент, то floatformat округляет значение, интерпретируя аргумент как количество знаков после запятой. См. табл. E.5.
Справочник по встроенным фильтрам |
503 |
||||
Таблица E.5. Еще примеры работы фильтра floatformat |
|||||
|
Значение |
|
Шаблон |
|
Выводится |
|
|
|
|||
|
|
|
|
|
|
34.23234 |
|
{{ value|floatformat:3 }} |
|
34.232 |
|
34.00000 |
|
{{ value|floatformat:3 }} |
|
34.000 |
|
34.26000 |
|
{{ value|floatformat:3 }} |
|
34.260 |
|
|
|
|
|
|
|
Если фильтру floatformat передать отрицательный аргумент, то значение будет округляться до указанного числа знаков после запятой, но только если дробная часть имеется. См. табл. E.6.
Таблица E.6. Еще примеры работы фильтра floatformat
Значение |
Шаблон |
|
Выводится |
|
|
|
|
34.23234 |
{{ value|floatformat:-3 |
}} |
34.232 |
34.00000 |
{{ value|floatformat:-3 |
}} |
34 |
34.26000 |
{{ value|floatformat:-3 |
}} |
34.260 |
|
|
|
|
Вызов floatformat без аргумента эквивалентен вызову с аргументом -1.
force_escape
Экранирует HTML-разметку (подробнее см. описание фильтра escape). Этот фильтр применяется немедленно и сразу же возвращает экранированную строку. Полезно в тех редких случаях, когда требуется выполнить экранирование многократно или применить другие фильтры к уже экранированной строке. Обычно используется фильтр escape.
get_digit
Возвращает запрошенную цифру из заданного целого числа, где 1 обозначает самую правую цифру, 2 – вторую справа и т. д. Если входные данные некорректны (значение на входе фильтра или аргумент не являются целыми числами или аргумент меньше 1), то возвращает исходное значение. В противном случае результатом является целое число. Например:
{{ value|get_digit:”2” }}
Если value равно 123456789, то будет выведено 8.
iriencode
Преобразует интернационализированный идентификатор ресурса (Inter nationalized Resource Identifier – IRI) в строку, пригодную для включения в URL. Необходимо, когда требуется включить в URL строки, содер-
504 |
Приложение E. Встроенные шаблонные теги и фильтры |
жащие не-ASCII символы. Этот фильтр можно без опасений применять к строке, которая уже была пропущена через фильтр urlencode.
join
Объединяет значения из заданного списка, разделяя их указанной строкой, как это делает метод Python str.join(list). Например:
{{ value|join:” // “ }}
Если значением value является список [‘a’, ‘b’, ‘c’], то будет выведена строка “a // b // c”.
last
Возвращает последний элемент списка, например:
{{ value|last }}
Если значением value является список [‘a’, ‘b’, ‘c’, ‘d’], то будет выведена строка “d”.
length
Возвращает длину значения (применим как к строкам, так и к спискам). Например:
{{ value|length }}
Если значением value является список [‘a’, ‘b’, ‘c’, ‘d’], то будет выведено 4.
length_is
Возвращает True, если длина значения совпадает с аргументом, иначе False. Например:
{{ value|length_is:”4” }}
Если значением value является список [‘a’, ‘b’, ‘c’, ‘d’], то будет выведено True.
linebreaks
Заменяет символы перевода строки в обычном тексте подходящими HTML-тегами; одиночный символ перевода строки замещается HTMLтегом разрыва строки (<br />), а символ перевода строки, за которым следует пустая строка, преобразуется в тег конца абзаца (</p>). Например:
{{ value|linebreaks }}
Если value равно Joel\nis a slug, то будет выведено <p>Joel<br />is a slug</p>.
Справочник по встроенным фильтрам |
505 |
linebreaksbr
Преобразует все символы перевода строки в обычном тексте в HTMLтеги <br />.
linenumbers
Выводит текст с порядковыми номерами строк.
ljust
Выравнивает значение по левому краю в поле заданной ширины. Аргумент: размер поля
lower
Переводит строку в нижний регистр, например:
{{ value|lower }}
Если value равно Still MAD At Yoko, то будет выведено still mad at yoko.
make_list
Возвращает значение, преобразованное в список. Для целого числа это будет список составляющих его цифр, для строки – список символов. Например:
{{ value|make_list }}
Если value – строка “Joel”, то будет выведено [u’J’, u’o’, u’e’, u’l’]. Если value – число 123, то будет выведен список [1, 2, 3].
phone2numeric
Преобразует номер телефона (возможно, содержащий буквы) в числовой эквивалент. Например, ‘800-COLLECT’ преобразуется в ‘800-2655328’.
Входное значение не обязано быть допустимым номером телефона, фильтр с успехом преобразует любую строку.
pluralize
Возвращает суффикс множественного числа, если значение не равно 1. По умолчанию суффикс равен ‘s’. Например:
You have {{ num_messages }} message{{ num_messages|pluralize }}.
Если слово во множественном числе оканчивается не на ‘s’, можно задать альтернативный суффикс в виде аргумента фильтра. Например:
You have {{ num_walruses }} walrus{{ num_walrus|pluralize:”es” }}.
506 |
Приложение E. Встроенные шаблонные теги и фильтры |
Если форма множественного числа образуется не путем добавления простого суффикса, то можно через запятую указать суффиксы единственного и множественного числа. Например:
You have {{ num_cherries }} cherr{{ num_cherries|pluralize:”y,ies” }}.
pprint
Обертка вокруг функции pprint.pprint из стандартной библиотеки Py- thon. Применяется для отладки.
random
Возвращает случайно выбранный элемент списка, например:
{{ value|random }}
Если значением value является список [‘a’, ‘b’, ‘c’, ‘d’], то может быть выведено “b”.
removetags
Удаляет перечисленные через запятую [X]HTML-теги. Например:
{{ value|removetags:”b span”|safe }}
Если value равно “<b>Joel</b> <button>is</button> a <span>slug</span>”, то будет выведено “Joel <button>is</button> a slug”.
rjust
Выравнивает значение по правому краю в поле заданной ширины. Аргумент: размер поля
safe
ПомечаетстрокукакнетребующуюдальнейшегоHTML-экранирования. Если автоматическое экранирование выключено, ничего не делает.
safeseq
Применяет фильтр safe к каждому элементу последовательности. Полезен в сочетании с другими фильтрами, воздействующими на последовательности, например:
{{some_list|safeseq|join:”, “ }}
Вданном случае применить фильтр safe непосредственно нельзя, так как он сначала преобразовал бы переменную в строку, а не воздействовал бы на каждый элемент последовательности.
Справочник по встроенным фильтрам |
507 |
slice
Возвращает фрагмент списка.
Синтаксис такой же, как принят в языке Python для извлечения фраг-
ментов списка. См. http://diveintopython.org/native_data_types/lists. html#odbchelper.list.slice. Например:
{{ some_list|slice:”:2” }}
slugify
Преобразует значение в нижний регистр, удаляет все символы, кроме букв, цифр и символов подчеркивания, и преобразует пробелы в дефисы. Кроме того, удаляет пробельные символы в начале и в конце. Например:
{{ value|slugify }}
Если value равно “Joel is a slug”, то будет выведено “joel-is-a-slug”.
stringformat
Форматирует значение переменной в соответствии со спецификатором формата в аргументе. Допустимы те же спецификаторы, что применяются в языке Python для форматирования строк, только начальный знак % опускается. О форматировании строк в Python см. http://docs.python.org/ library/stdtypes.html#string-formatting-operations. Например:
{{ value|stringformat:”s” }}
Если value равно “Joel is a slug”, то будет выведено “Joel is a slug”.
striptags
Удаляет все [X]HTML-теги. Например:
{{ value|striptags }}
Если value равно “<b>Joel</b> <button>is</button> a <span>slug</span>”, то будет выведено “Joel is a slug”.
time
Форматирует время согласно заданной строке формата (спецификаторы форматы такие же, как в теге {% now %}). Фильтр time принимает спецификаторы, относящиеся ко времени дня, но не к дате (по очевидным причинам). Для форматирования даты пользуйтесь фильтром date. Например:
{{ value|time:”H:i” }}
508 |
Приложение E. Встроенные шаблонные теги и фильтры |
Если value – объект datetime.datetime.now(), то будет выведена строка вида “01:23”. Если строка формата не задана, то по умолчанию используется значение параметра TIME_FORMAT:
{{ value|time }}
timesince
Выводит дату в виде истекшего промежутка времени (например «4 days,
6hours»).
Вкачестве необязательного аргумента принимает переменную, содержащую дату, до которой отсчитывается промежуток (без аргумента промежуток отсчитывается до текущего момента времени). Например, если blog_date – полночь 1 июня 2006 года, comment_date – 08:00 1 июня 2006 года, то {{ blog_date|timesince:comment_date }} вернет «8 hours».
При сравнении дат, заданных с учетом и без учета часового пояса, возвращается пустая строка. Минимальная единица округления – минута. Если точка отсчета находится в будущем относительно переданного аргумента, возвращается строка “0 minutes”.
timeuntil
Аналогичен timesince, но промежуток времени измеряется от текущего момента до момента в будущем, заданного объектом типа date или datetime. Например, если сегодня 1 июня 2006 года, а conference_date – 29 июня 2006 года, то {{ conference_date|timeuntil }} вернет строку “4 weeks”.
В качестве необязательного аргумента принимает переменную, содержащую дату, от которой отсчитывается промежуток (без аргумента промежуток отсчитывается от текущего момента времени). Например, если blog_date – полночь 22 июня 2006 года, то {{ conference_ date|timeuntil:from_date }} вернет “1 week”.
При сравнении дат, заданных с учетом и без учета часового пояса, возвращается пустая строка. Минимальная единица округления – минута. Если точка отсчета находится в прошлом относительно переданного аргумента, возвращается строка “0 minutes”.
title
Возвращает строку, в которой начальные буквы каждого слова преобразованы в верхний регистр.
truncatewords
Обрезает строку после заданного числа слов. Аргумент: количество оставляемых слов.
Справочник по встроенным фильтрам |
509 |
Например:
{{ value|truncatewords:2 }}
Если value равно “Joel is a slug”, то будет выведено “Joel is ...”.
truncatewords_html
Аналогичен truncatewords, но учитывает HTML-теги. Теги, которые были открыты в данной строке и не закрыты до точки обрезания, закрываются сразу же после обрезания.
Этот фильтр менее эффективен, чем truncatewords, поэтому использовать его следует только для HTML-текста.
unordered_list
Принимает вложенный список и возвращает маркированный HTMLсписок без открывающего и закрывающего тегов <ul>.
Предполагается, что список задан корректно. Например, если var содержит список [‘Штаты’, [‘Канзас’, [‘Лоуренс’, ‘Топека’], ‘Иллинойс’]], то {{ var|unordered_list }} вернет такую HTML-разметку:
<li>Штаты
<ul>
<li>Канзас
<ul>
<li>Лоуренс</li>
<li>Топека</li>
</ul>
</li>
<li>Иллинойс</li>
</ul>
</li>
upper
Преобразует строку в верхний регистр, например:
{{ value|upper }}
Если value равно “Joel is a slug”, то будет выведено “JOEL IS A SLUG”.
urlencode
Экранирует значения для вставки в URL.
urlize
Преобразует адреса URL из простого текста в гиперссылки.
