Вложенные маршруты в Django
Когда маршрутов становится много,
их неудобно держать все в
config/urls.py. Обычно у
каждого приложения свой файл
urls.py, а в проекте его
подключают через include.
Давайте создадим такой файл
в приложении main.
В нем опишем маршруты приложения:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
path('about/', views.about),
path('contact/', views.contact),
]
Теперь давайте подключим эти
маршруты в config/urls.py
с общим префиксом, например
main/:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('main/', include('main.urls')),
]
Префикс main/ Django добавит
сам ко всем маршрутам приложения.
Получатся адреса /main/,
/main/about/ и
/main/contact/.
Если префикс не нужен, давайте подключим маршруты приложения на корень сайта:
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('main.urls')),
]
Давайте посмотрим, как сгруппировать часть маршрутов с общим началом. Например, все адреса магазина:
from django.urls import path
from . import views
shop_patterns = [
path('', views.shop_home),
path('products/', views.product_list),
path('cart/', views.cart_view),
]
urlpatterns = [
path('shop/', include(shop_patterns)),
]
Вынесите маршруты приложения
main в файл main/urls.py
и подключите их через include.
В файле urls.py объявлены
следующие маршруты для магазина:
urlpatterns = [
path('shop/', views.shop_home),
path('shop/products/', views.product_list),
path('shop/cart/', views.cart_view),
path('shop/checkout/', views.checkout),
]
Сделайте для них представления,
объединив маршруты через
include с общим префиксом
shop/.
Сделайте то же для маршрутов блога: список, пост по id, комментарии и лайк. Объедините их как вложенные.