Шаблон отдельной темы
В шаблоне должно отображаться название темы и текст записей. Также необходимо сообщить пользователю, если по теме еще не было сделано ни одной записи:
topic.html
{% extends 'learning_logs/base.html' %}
{% block content %}
(1) <p>Topic: {{ topic }}</p>
<p>Entries:</p>
(2) <ul>
(3) {% for entry in entries %}
. .<li>
(4) . . <p>{{ entry.date_added|date:'M d, Y H:i' }}</p>
(5) . . <p>{{ entry.text|linebreaks }}</p>
. .</li>
? {% empty %}
. .<li>
. . There are no entries for this topic yet.
. .</li>
{% endfor %}
</ul>
{% endblock content %}
Шаблон расширяет base.html, как и для всех страниц проекта. Затем выводится текущая тема (1) из шаблонной переменной {{ topic }}. Переменная topic доступна, потому что она включена в словарь context. Затем создается маркированный список со всеми записями по теме (2); перебор записей осуществляется так же, как это делалось ранее для тем (3).
С каждым элементом списка связываются два значения: временна?я метка и полный текст каждой записи. Для временнуй метки (4) выводится значение атрибута date_added. В шаблонах Django вертикальная черта (|) представляет фильтр — функцию, изменяющую значение шаблонной переменной. Фильтр date:'M d, Y H:i' выводит временны?е метки в формате January 1, 2015 23:00. Следующая строка выводит полное значение text (вместо первых 50 символов каждой записи). Фильтр linebreaks (5) следит за тем, чтобы длинный текст содержал разрывы строк в формате, поддерживаемом браузером (вместо блока непрерывного текста). В точке ? шаблонный тег {% empty %} используется для вывода сообщения об отсутствии записей.