Ответ
Функция 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-ами легко перенести в другой проект.
- Читаемость: Код становится чище и проще для навигации.