Ответ
Функция include()
в Django позволяет делегировать обработку части URL-адресов другому модулю URL-конфигурации (другому файлу urls.py
). Это основной способ организации модульной и масштабируемой маршрутизации в проекте.
Основная цель — декомпозиция. Вместо одного огромного файла urls.py
маршруты каждого приложения (blog
, shop
и т.д.) хранятся в собственном файле urls.py
, а корневой urls.py
просто подключает их.
Пример:
-
Корневой
myproject/urls.py
:from django.urls import path, include from django.contrib import admin urlpatterns = [ path('admin/', admin.site.urls), # Все URL, начинающиеся с 'blog/', будут переданы в 'blog.urls' path('blog/', include('blog.urls')), ]
-
Файл
blog/urls.py
приложения:from django.urls import path from . import views urlpatterns = [ path('', views.post_list, name='post_list'), path('<int:pk>/', views.post_detail, name='post_detail'), ]
В результате URL /blog/
будет обработан представлением post_list
, а /blog/5/
— представлением post_detail
.
Преимущества:
- Модульность: Каждое приложение управляет своими URL-адресами.
- Переиспользуемость: Приложение с его URL-ами легко перенести в другой проект.
- Читаемость: Код становится чище и проще для навигации.