Давайте заглибимось у створення додатків та організацію їхньої структури.
Нагадаємо, під додатком (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 майже завжди підказує, де ти помилився.
Тепер у нас є готовий застосунок "Блог"!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ