Глава 18 • Знакомство с Django
Мы просто добавили
topics/
в аргумент регулярного выражения, используемый
с URL-адресом домашней страницы
. Когда Django проверяет запрашиваемый
URL-адрес, эта схема совпадет с любым URL-адресом, который состоит из базового
URL-адреса и слова
topics
. Слеш в конце можно включить, а можно не включать,
но после слова
topics
ничего быть не должно, иначе схема не совпадет. Любой
запрос с URL-адресом, соответствующим этой схеме, будет передан функции
topics()
в
views .py
.
Представление topics
Функция
topics()
должна получать данные из базы данных и отправлять их ша-
блону. Обновленная версия
views .py
выглядит так:
views.py from django.shortcuts import render
❶
from .models import Topic
def index(request):
...
❷
def topics(request):
"""Выводит список тем."""
❸
topics = Topic.objects.order_by('date_added')
❹
context = {'topics': topics}
❹
return render(request, 'learning_logs/topics.html', context)
Сначала импортируется модель, связанная с нужными данными
. Функции
topics()
необходим один параметр: объект
request
, полученный Django от серве-
ра
. В точке
выдается запрос к базе данных на получение объектов
Topic
, от-
сортированных по атрибуту
date_added
. Полученный итоговый набор сохраняется
в
topics
.
В точке
определяется контекст, который будет передаваться шаблону.
Контекст представляет собой словарь, в котором ключами являются имена, используемые
в шаблоне для обращения к данным, а значениями — данные, которые должны пере-
даваться шаблону. В данном случае существует всего одна пара «ключ-значение»,
которая содержит набор тем, отображаемых на странице. При построении стра-
ницы, использующей данные, функции
render()
передается переменная
context
,
а также объект
request
и путь к шаблону
.
Шаблон topics
Шаблон страницы со списком тем получает словарь
context
, чтобы шаблон мог
использовать данные, предоставленные
topics()
. Создайте файл с именем
topics .
html
в одном каталоге с
index .html
. Вывод списка тем в шаблоне осуществляется
следующим образом: