420
Глава 18 • Знакомство с Django
ПРИМЕЧАНИЕ
Выражения в строках
и
, обращающиеся к базе данных за кон-
кретной информацией, называются запросами . Когда вы пишете подобные запросы
для своих проектов, сначала опробуйте их в оболочке Django . Вы сможете проверить
результат намного быстрее, чем если напишете представление и шаблон, а затем про-
верите результаты в браузере .
Шаблон отдельной темы
В шаблоне должно отображаться название темы и текст записей. Также необходимо
сообщить пользователю, если по теме еще не было сделано ни одной записи:
topic.html
{% extends 'learning_logs/base.html' %}
{% block content %}
❶
Topic: {{ topic }}
Entries:
❷
❸
{% for entry in entries %}
-
❹
{{ entry.date_added|date:'M d, Y H:i' }}
❺
{{ entry.text|linebreaks }}
❻
{% empty %}
- There are no entries for this topic yet.
{% endfor %}
{% endblock content %}
Шаблон расширяет
base .html
, как и для всех страниц проекта. Затем выводится
текущая тема
из шаблонной переменной
{{
topic
}}
. Переменная
topic
доступ-
на, потому что она включена в словарь
context
. Затем создается маркированный
список со всеми записями по теме
; перебор записей осуществляется так же, как
это делалось ранее для тем
.
С каждым элементом списка связываются два значения: временная метка и пол-
ный текст каждой записи. Для временной метки
выводится значение атрибута
date_added
. В шаблонах Django вертикальная черта (
|
) представляет
фильтр
—
функцию, изменяющую значение шаблонной переменной. Фильтр
date:'M d,
Y H:i'
выводит временные метки в формате
January 1, 2018 23:00
. Следующая
строка выводит полное значение
text
(вместо первых 50 символов каждой запи-
си). Фильтр
linebreaks
следит за тем, чтобы длинный текст содержал разрывы
строк в формате, поддерживаемом браузером (вместо блока непрерывного текста).
В точке
шаблонный тег
{%
empty
%}
используется для вывода сообщения об от-
сутствии записей.
Построение других страниц
421
Ссылки на странице
Прежде чем просматривать страницу отдельной темы в браузере, необходимо из-
менить шаблон списка тем, чтобы каждая тема вела на соответствующую страницу.
Внесите следующие изменения в
topics .html
:
Достарыңызбен бөлісу: