Menu
CoddyTech

Именованные URL

Часть раздела Основы Django путешествия по Django на Coddy. Урок 10 из 23.

Главная страница должна содержать ссылку на страницу «О нас». Вставлять "/about/" в каждую ссылку работает до тех пор, пока адрес не изменится, а затем все ссылки перестанут работать. Вместо этого задайте каждому маршруту имя и формируйте адрес на его основе. Файл urls.py приложения магазина:

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/:
reverse("shop:cart")                    # "/shop/cart/"
reverse("shop:product", args=["mug"])   # "/shop/products/mug/"

Измените "cart/" на "basket/", и все адреса, сформированные на основе имени, обновятся.

challenge icon

Задание

Легко
  • В menu/urls.py задайте app_name = "menu" и присвойте имена всем маршрутам: home, about, hours, contact, table, drink, order.
  • На главной странице после абзаца добавьте ссылку <a href="...">About us</a>, адрес которой берётся из 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