Именованные URL
Часть раздела Основы Django путешествия по Django на Coddy. Урок 10 из 23.
На главной странице должна быть ссылка на страницу «О нас». Если вписать "/about/" в каждую ссылку, всё будет работать, пока адрес не изменится, а затем все ссылки перестанут работать. Вместо этого задайте имя каждому маршруту и формируйте адрес на его основе. Файл urls.py приложения shop:
app_name = "shop"
urlpatterns = [
path("cart/", views.cart, name="cart"),
path("products/<slug:slug>/", views.product, name="product"),
]app_name помещает имена в пространство имён: полное имя — "shop:cart", поэтому в двух приложениях может быть маршрут с именем home. reverse() преобразует имя обратно в адрес. Если подключить приложение shop по адресу shop/:
from django.urls import reverse
reverse("shop:cart") # "/shop/cart/"
reverse("shop:product", args=["mug"]) # "/shop/products/mug/"Вызывайте reverse() внутри представления. В начале файла views.py этот вызов выполняется до того, как маршруты будут созданы.
Измените "cart/" на "basket/", и все адреса, сформированные на основе имени, обновятся.
Задание
ЛегкоСвяжи главную страницу со страницей «О нас» по имени.
- В
menu/urls.pyустановиapp_nameв значение"menu"и присвой каждому маршруту имя соответствующего представления:home,about,hours,contact,table,drink,order. - В
menu/views.pyимпортируйreverseизdjango.urls. Вhomeдобавь ссылкуAbout us, атрибутhrefкоторой имеет значениеreverse("menu:about").
Нажми «О нас»: откроется страница «О нас».
Попробуйте сами
from django.urls import path
from . import views
urlpatterns = [
path("", views.home),
path("about/", views.about),
path("hours/", views.hours),
path("contact/", views.contact),
path("table/<int:number>/", views.table),
path("drinks/<slug:slug>/", views.drink),
path("order/", views.order),
]
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы Django
1Ваш первый сайт на Django
Привет, DjangoВторая страница4Макеты и статические файлы
Наследование шаблоновЗаголовок для каждой страницы2Динамические URL
Конвертеры путейСтраница для каждого напиткаСтроки запросаВыбрасывание Http404Потренируйтесь самостоятельно: Песочница Django