Короткий ответ
Django app — это отдельный Python-пакет с собственными моделями, view, шаблонами и миграциями, решающий конкретную подзадачу (например, «блог», «пользователи»); проект объединяет несколько таких приложений в INSTALLED_APPS.
Как это работает подробнее
Приложение создаётся командой startapp и содержит стандартный набор файлов (models.py, views.py, apps.py, migrations/). Чтобы Django «увидел» приложение (его модели, шаблонные теги, сигналы), его нужно указать в списке INSTALLED_APPS в settings.py.
Пример кода
example.py
# settings.py
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"blog", # наше приложение
"users", # ещё одно приложение
]
# Структура blog/: models.py, views.py, urls.py, migrations/, apps.pyЧто использовать на практике
- Практика. Разделение на приложения по смысловым доменам (
users,orders,billing) облегчает повторное использование кода между проектами и упрощает ориентацию в большом проекте. Для совсем маленьких проектов избыточное дробление на множество приложений может только усложнить навигацию.
Подводные камни
- Риск. Путают термины «Django project» (весь сайт/конфигурация) и «Django app» (один из модулей внутри проекта); создают одно гигантское приложение
coreсо всеми моделями подряд, теряя преимущества модульности.