У цій лекції ми розглянемо:
- Основи структури проєкту Django: розберемося, що це за дивні папки та файли, які з'являються при створенні нового проєкту.
- Команда
django-admin startproject: створимо новий проєкт за її допомогою та дослідимо його. - Масштабована структура додатка: обговоримо, як організувати проєкт так, щоб "за п'ять років" він все ще залишався зрозумілим вам і вашій команді.
Основи структури проєкту Django
Коли ми створюємо новий проєкт Django, він генерує базову структуру. На перший погляд вона може здатися трохи незрозумілою, але не хвилюйся, ми все розкладемо по поличках.
Ось як виглядає структура проєкту за замовчуванням:
myproject/ # Коренева директорія проєкту
├── manage.py # Головний "диригент" проєкту
├── myproject/ # Пакет проєкту
│ ├── __init__.py # Вказує, що це Python-пакет
│ ├── settings.py # Налаштування проєкту
│ ├── urls.py # Основний файл маршрутів
│ ├── asgi.py # Налаштування для ASGI-сервера (для асинхронних проєктів)
│ └── wsgi.py # Налаштування для WSGI-сервера (для розгортання)
⚠️ Деякі файли на початку виглядають як "абракадабра". Не намагайся все завчити! Ми будемо розбирати їх поступово в наступних лекціях.
Короткий огляд ключових файлів:
manage.py: головний диригент твого проєкту. Він допомагає запускати сервер, створювати додатки, виконувати міграції і багато інших крутих речей.- Наприклад, щоб запустити сервер, ти введеш:
python manage.py runserver
- Наприклад, щоб запустити сервер, ти введеш:
settings.py: серце проєкту. Тут зберігаються всі налаштування, такі як інформація про базу даних, конфігурація додатків і багато іншого. Обов'язково подружимося з ним на наступній лекції.urls.py: місце, де маршрутизуються всі шляхи твого додатку. Хочеш налаштовувати маршрути і вказати, який URL куди повинен привести? Тобі сюди.asgi.pyіwsgi.py: файли, які допомагають розгорнути проєкт на сервері. Поки що можеш сприймати їх, як "щось важливе для життя проєкту на продакшені". Не чіпаємо їх без необхідності.__init__.py: робить директорію Python-пакетом. Навіщо? Щоб Python знав, що можна імпортувати файли з цієї директорії.
Використання команди django-admin startproject
Тепер час переходити від слів до практики! Давайте створимо наш власний проєкт і подивимось, як магія перетворюється на структуру.
Створіть віртуальне середовище (якщо ще не зробили):
python -m venv env source env/bin/activate # для Linux/Mac env\Scripts\activate # для WindowsПереконайтеся, що Django встановлено:
pip install djangoСтворіть новий проєкт за допомогою команди
django-admin startproject:django-admin startproject myprojectЦе створить папку
myprojectз описаною раніше структурою.Перейдіть до створеного проєкту:
cd myprojectЗапустіть сервер, щоб переконатися, що все працює:
python manage.py runserverВідкрийте http://127.0.0.1:8000/ у браузері. Якщо бачите стандартну вітальну сторінку Django — вітаю! Це перший крок до величі.
Організація проєкту для масштабованого застосунку
Коли проєкт зростає, хаос може перетворити його на "кодове пекло". Щоб цього уникнути, важливо з самого початку подбати про організацію.
Проблема стандартної структури
Ось стандартна структура після створення нового проєкту:
myproject/
├── myproject/
│ ├── settings.py
│ ├── urls.py
Якщо ви хочете написати великий проєкт із багатьма застосунками та налаштуваннями для розробки, тестування і продакшена, — така структура може стати незручною.
Рекомендована масштабована структура
Пропонуємо модифікувати проєкт і організувати його приблизно так:
myproject/
├── apps/ # Тут будуть лежати всі ваші застосунки
├── config/ # Налаштування проєкту
│ ├── __init__.py
│ ├── settings/
│ │ ├── base.py # Основні налаштування
│ │ ├── dev.py # Налаштування для розробки
│ │ └── prod.py # Налаштування для продакшена
│ ├── urls.py
│ ├── wsgi.py
│ └── asgi.py
├── manage.py
├── requirements.txt
Чому так?
Каталог
apps/:- Всі ваші застосунки (наприклад, "блог", "магазин") будуть знаходитись в одному місці.
- Зручно шукати та керувати.
Каталог
config/:- Налаштування тепер розділені для різних середовищ:
base.py,dev.pyтаprod.py. - Легше робити деплой, і ви випадково не включите
DEBUG=Trueна продакшені (а це ризиковано, як залишити ключі від дому на столі в кафе).
- Налаштування тепер розділені для різних середовищ:
Як налаштувати розділення налаштувань?
У файлах manage.py та wsgi.py можна вказати, з яким файлом використовувати налаштування:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.dev')
Тепер, якщо ви в продакшені, змініть dev на prod.
Практичне завдання
- Створіть проєкт Django з ім'ям
myproject. - Організуйте структуру так, як було показано вище (з
appsтаconfig). - Налаштуйте розділення налаштувань на
base.py,dev.pyтаprod.py.
Порада: почніть з копіювання вмісту settings.py у base.py, а потім розділіть параметри, специфічні для розробки та продакшена.
Ось і все! Тепер ви знаєте, як створити проєкт Django та організувати його для довгого і щасливого життя.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ