Menu
CoddyTech

Именованные 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/", и все адреса, сформированные на основе имени, обновятся.

challenge icon

Задание

Легко

Свяжи главную страницу со страницей «О нас» по имени.

  1. В menu/urls.py установи app_name в значение "menu" и присвой каждому маршруту имя соответствующего представления: home, about, hours, contact, table, drink, order.
  2. В 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),
]
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы Django

Потренируйтесь самостоятельно: Песочница Django