Давайте углубимся в создание приложений и организации их структуры.
Напомним, под приложением (app) в Django понимают модуль или компонент проекта, который решает определенную задачу. Django позволяет разбивать проект на отдельные независимые приложения, что делает код более читаемым, модульным и удобным для масштабирования. Одно и то же приложение можно использовать в нескольких проектах или интегрировать в собственный проект сторонние приложения, созданные другими разработчиками.
Пример: представьте, что у вас есть проект веб-сайта. В нем могут быть следующие приложения:
- Блог (
blog) - Авторизация пользователей (
users) - Управление заказами (
orders)
Каждое из них — отдельное приложение.
Напоминание: что внутри нашего приложения
На прошлом занятии мы создали приложение blog. После запуска команды startapp blog в вашем проекте появится следующая структура:
blog/
__init__.py # Делает эту папку модулем Python.
admin.py # Код для настройки админ-зоны.
apps.py # Конфигурация приложения.
migrations/ # Папка для миграций базы данных.
__init__.py
models.py # Определение моделей базы данных.
tests.py # Тесты для приложения.
views.py # Представления, отвечающие за бизнес-логику.
__init__.py: Этот файл просто сообщает Python, что папкаblog— это модуль. Пока он пуст, и вас это устраивает.admin.py: Используется для регистрации моделей в Django Admin (к этому вернемся позже).apps.py: Указывает настройки приложения. Например, здесь указывается его имя.migrations/: Хранит файлы миграций для отслеживания изменений схемы базы данных.models.py: Здесь мы будем задавать модели для базы данных.tests.py: Файл для написания тестов. Пока нам с ним нужно лишь подружиться.views.py: Здесь хранится основная бизнес-логика: как обрабатывать HTTP-запросы.
Организация кода внутри приложения
Django дает вам стандартный подход к организации кода, но в реальных проектах вы можете улучшать и модифицировать структуру для удобства. Например, в крупных проектах часто создают дополнительные файлы и папки, такие как:
urls.py: Для маршрутов (вместо добавления их на уровне проекта).forms.py: Для работы с формами.templates/: Для хранения HTML-шаблонов.static/: Для CSS, JS или изображений.
Рекомендации по организации:
- Разделяйте логику: храните маршруты в
urls.py, бизнес-логику вviews.py, а модели — вmodels.py. - Используйте папки: если код становится слишком большим, разбивайте его на подпапки (например,
services/для вспомогательной логики).
Пример улучшенной структуры:
blog/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
urls.py # Отдельный файл для маршрутов.
templates/ # Шаблоны HTML для приложения.
blog/
index.html
static/ # Статические файлы.
blog/
styles.css
Продолжаем разработку нашего приложения
В прошлом занятии мы создали приложение со списком блогов с помощью команды
python manage.py startapp blog
Папка blog создастся автоматически.
Давайте продолжим.
Добавляем файл
urls.pyСоздайте файл
urls.pyвнутри папкиblog:from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), # Маршрут для главной страницы блога ]Добавляем представление в
views.pyОткройте файл
views.pyи определите функциюindex, отвечающую за отображение главной страницы блога:from django.http import HttpResponse def index(request): return HttpResponse("Добро пожаловать в блог!")Регистрируем маршрутизатор приложения в
urls.pyпроектаТеперь нужно сообщить основному проекту о нашем приложении и его маршрутах. Откройте файл
urls.pyпроекта (в корне) и внесите изменения:from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('blog/', include('blog.urls')), # Включаем маршруты блога ]Запускаем сервер
Запустите сервер:
python manage.py runserverОткройте в браузере http://127.0.0.1:8000/blog/ и вы увидите сообщение "Добро пожаловать в блог!".
Что делать, если что-то пошло не так?
Если вы запутались в маршрутизации, не забывайте:
- Проверить, добавили ли вы приложение в
INSTALLED_APPS. - Убедиться, что путь в
include()указан правильно. - Проверить, что файл
urls.pyсодержитurlpatterns.
Если сервер ругается на отсутствующие файлы — будьте спокойны, Django почти всегда подсказывает, где вы ошиблись.
Теперь у нас есть готовое приложение "Блог"!
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ