Директивы, теги и фильтры
В шаблонах можно вызывать функции. Для этого в файле models.py
создадим функцию в классе выводимой модели:
def my_func(self):
return 'Hello from model'
Для того чтобы вызвать эту функцию в шаблоне необходимо выполнить:
{{ item.my_func }}
Также можно обращаться к методам объекта. Например:
{{ news.count}}
Выведет общее количество добавленных элементов в объект. Все методы вызываются без параметров. Вызов функций с параметрами не предусмотрен.
Теги
Тег | Описание | Ссылка на пример использования |
---|---|---|
autoescape | Контролирует автоэкранирование HTML в тексте | Ссылка |
block | Вставка шаблона в другой шаблон | Ссылка |
csrf_token | Вывод специального токена для форм | Ссылка |
cycle | Организация циклов. Например для чередования цветов строк в таблице. В качестве аргументов передаются названия классов | Ссылка |
extends | Необходим для наследования шаблонов | Ссылка |
filter | Нужен если необходимо назначить фильтр для блока вывода | Ссылка |
for | Организация цикла | Ссылка |
if | Данный тег позволяет проверить факт отличного от False значения у переменной | Ссылка |
lorem | Генерирует случайный набор текста | Ссылка |
now | Выводит текущую дату и время | Ссылка |
Добавление фотографий на сайт
Если у нас загружены для некоторых объектов фотографии (не для всех), то в шаблон необходимо вставить следующий код:
{% if item.photo %}
<img src="{{ item.photo.url }}" alt="" width="350" class="mr-3">
{% else %}
<img src="https://picsum.photos/id/1060/350/235/?blur=2" alt="" width="350" class="mr-3">
{% endif %}
Блок {% if item.photo %}
используется для того чтобы при отсутствии загруженного изображения отображалось некое стандартное изображение.
Фильтры
Фильтр | Пример | Описание |
---|---|---|
add | {{ value|add:"2" }} | Прибавляет число к значению |
addslashes | {{ value|addslashes }} | Экранирует слэши |
capfirst | {{ value|capfirst }} | Преобразует первый символ аргумента в верхний регистр |
cut | {{ value|cut:" " }} | Удаляет значение аргумента из строки |
date | {{ value|date:"D d M Y" }} | Возвращает форматированную дату |
default | {{ value|default:"nothing" }} | если у value значение False , то к нему будет применено значение по умолчанию |
default_if_none | {{ value|default_if_none:"nothing" }} | если у value значение none , то к нему будет применено значение по умолчанию |
divisibleby | {{ value|divisibleby:"3" }} | Возвращает True если значение делится на аргумент |
escape | {{ title|escape }} | Экранирование HTML |
escapejs | {{ value|escapejs }} | Экранирует JavaScript |
filesizeformat | {{ value|filesizeformat }} | Форматирует вывод размера файла |
first | {{ value|first }} | Возвращает первый элемент списка |
floatformat | {{ value|floatformat:3 }} | Предназначен для форматирования чисел с плавающей точкой. Позваляет указать кол-во знаков после запятой. |
get_digit | {{ value|get_digit:"2" }} | Возвращает указанную цифру справа. Например для числа 123456789 вернется 8 |
join | {{ value|join:" // " }} | Объединяет списки, аналог метода join в Python |
length | {{ value|length }} | Возвращает количество элементов в значении |
length_is | {{ value|length_is:"4" }} | Позволяет проверить равен ли размер значения аргументу |
linebreaks | {{ value|linebreaks }} | Заменяет переносы строк на параграфы |
linebreaksbr | {{ value|linebreaksbr }} | Заменяет переносы строк на <br /> |
lower | {{ value|lower }} | отображает текст в нижнем регистре |
make_list | {{ value|make_list }} | Превращает значение в список |
phone2numeric | {{ value|phone2numeric }} | Преобразует номер телефона содержащий буквы в его числовой эквивалент. Например 800-COLLECT будет преобразован 800-2655328 |
safe | {{ var|safe|escape }} | Позволяет выполняться HTML коду |
slugify | {{ value|slugify }} | Из строки возвращает слаг (заменяет пробелы знаком - ). Необходимо для URL адресов |
time | {{ value|time:"H:i" }} | Форматирует время |
timesince | {{ blog_date|timesince:comment_date }} | Возвращает сколько времени прошло с даты до указанной (либо до текущей если нет аргументов) |
timeuntil | {{ conference_date|timeuntil:from_date }} | То же самое что и timesince , только больше для минут, а не дней |
title | {{ value|title }} | Преобразует первую букву кажого слова в заглавную, остальные в прописные |
truncatechars | {{ value|truncatechars:7 }} | Образает значение до указанного количества букв |
truncatechars_html | {{ value|truncatechars_html:7 }} | Образает значение до указанного количества букв и закрывает открытые теги |
truncatewords | {{ value|truncatewords:2 }} | Образает значение до указанного количества слов |
truncatewords_html | {{ value|truncatewords_html:2 }} | Образает значение до указанного количества слов и закрывает открытые теги |