Пам'ятаєте файл manage.py у корені проєкту? Якщо ви думали, що це просто "кнопка запуску" — у мене для вас гарні новини. Цей файл набагато потужніший!
Уявіть сучасну кухню, де замість десятка різних приладів є один зручний пульт управління. Одне натискання — духовка розігріта, друге — таймер встановлений, третє — витяжка ввімкнена. Саме так працює manage.py у Django:
- Потрібно запустити сервер?
python manage.py runserver - Оновити базу даних?
python manage.py migrate - Перевірити код?
python manage.py test
І це лише початок! manage.py — це ваш універсальний помічник для управління всім проєктом Django.
Основний синтаксис:
python manage.py <команда> [параметри]
Кожна команда має своє призначення, деякі з них ми будемо використовувати настільки часто, що вони стануть другою натурою.
Практичне знайомство з командами
Тепер давайте розберемо найпоширеніші команди manage.py і навчимося застосовувати їх на практиці.
1. runserver
Це, мабуть, та команда, з якою ви вже знайомі. Вона запускає локальний dev-сервер, дозволяючи нам перевіряти, як працює проєкт у режимі реального часу.
Синтаксис:
python manage.py runserver
За замовчуванням сервер запускається на http://127.0.0.1:8000. Якщо вам потрібен інший порт або IP-адреса, це можна вказати:
python manage.py runserver 8080 # Запустить сервер на порту 8080
python manage.py runserver 0.0.0.0:8000 # Відкрити сервер для підключення ззовні
dev-сервер не підходить для production! У реальному житті ми використовуємо справжні веб-сервери, такі як Nginx або Apache.
2. startapp
Ця команда створює новий додаток. Ми обговорювали в попередній лекції, що проєкт Django може включати один або кілька додатків, і кожен з них ізольований один від одного.
Приклад:
python manage.py startapp blog
Після виконання цієї команди з'явиться папка blog, а всередині — файли, які Django створив за вас: models.py, views.py, apps.py та інші. Про структуру додатка ми поговоримо трохи пізніше на курсі, але поки знайте: це початок вашого функціонального модуля.
3. migrate і makemigrations
Django ORM — це те, що робить роботу з базою даних майже магічною. Важливо розуміти, що щоб зміни в моделях відобразилися на базі даних, потрібно використовувати міграції. Ось тут нам допоможуть makemigrations і migrate.
Створення міграцій
python manage.py makemigrations
Ця команда створює «пакети інструкцій» про те, як перетворити нашу базу даних. Наприклад, якщо ми додали модель Post, makemigrations зафіксує її.
Застосування міграцій
python manage.py migrate
Вона приводить базу даних у відповідність з міграціями. Фактично, це все одно що сказати Django: «Просто зроби це, я довіряю!»
python manage.py makemigrations && python manage.py migrate
щоб вносити зміни у ваші дані.
4. createsuperuser
Щоб отримати доступ до адміністративної панелі Django, потрібен суперкористувач. Він створюється командою:
python manage.py createsuperuser
Далі система попросить вас ввести ім'я користувача, email і пароль. Після цього ви зможете зайти в адмін-зону за адресою:
http://127.0.0.1:8000/admin
5. shell
Команда shell відкриває інтерактивну Python-сесію з підключенням до вашого проєкту. Це потужний інструмент для роботи з даними. Ви можете напряму взаємодіяти з базою даних через моделі, а також тестувати функціональність.
python manage.py shell
Спробуємо прямо в консолі:
from myapp.models import Post
Post.objects.all()
Це виведе всі записи моделі Post. Пізніше, коли ми почнемо працювати з моделями, ви оціните цю команду по достоїнству.
6. check
Ця команда перевіряє налаштування вашого проєкту на наявність потенційних помилок. Якщо в settings.py є помилки або невідповідності, вона повідомить вас про це.
python manage.py check
запускайте цю команду щоразу, коли сумніваєтесь у своєму коді. Вона врятує вас від болю (і від неприємних багів).
7. showmigrations
Хочете дізнатися, які міграції були застосовані, а які — ні? Ця команда надасть вам повний список.
python manage.py showmigrations
Приклад виводу:
admin
[X] 0001_initial
[ ] 0002_auto_20231001_1234
8. test
Для запуску тестів вашого додатка використовується команда:
python manage.py test
Пізніше ми детально розберемо, як писати тести, а поки знайте: ця команда запускає всі тести в директорії tests.py (або інші тестові модулі).
9. collectstatic
Коли ваш проєкт готовий до публікації, вам потрібно зібрати всі статичні файли (CSS, JS, зображення) в одному місці. Це робиться командою:
python manage.py collectstatic
За замовчуванням файли збираються в папку, вказану в settings.py параметром STATIC_ROOT. Ця команда знадобиться вам у продакшені.
Типові помилки та корисні поради
Помилка "Command not found". Найчастіше виникає, якщо ти забув додати
pythonпередmanage.py. Наприклад:python manage.py runserverВикористання
runserverу production. Локальний сервер розробки не призначений для великих навантажень. Якщо ти запустиш його в бойовому режимі на великому проєкті, чекай проблем.Команда
migrateбезmakemigrations. Django просто не знає, які зміни потрібно застосувати. Завжди починай зmakemigrations.Ігнорування
check. Якщо щось працює "не так", але здається "незначним", краще все одно перевірити проєкт.checkчасто вирішить проблему до того, як вона стане головним болем.
Застосування команд у реальних проєктах
Тепер, знаючи про команди manage.py, ви значно прискорите процес розробки. Ці команди дуже потрібні всім Django-розробникам:
- На співбесідах вас обов'язково запитають про використання
migrate,createsuperuserчиrunserver. Не лякайтеся, це базова компетенція. - У реальних проєктах команди забезпечують порядок і простоту управління. Ви завжди знаєте, що і як робити з базою даних, додатками та налаштуваннями.
Адже, як кажуть, "Гарний код пишуть програмісти, поганий код лагодять програмісти, а команди в Django роблять усе". (Можливо, ми щойно це вигадали, але це правда).
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ