Шаг 02. БД, миграции, суперпользователь
⚡ Кратко: что делаем на этом шаге
Цель: Создать приложение catalog, применить начальные миграции Django, создать суперпользователя и войти в Django Admin.
- Команды:
python manage.py startapp catalog,python manage.py migrate,python manage.py createsuperuser - Файлы:
catalog/(новая папка),config/settings.py(добавитьcatalog) - Результат: сервер запущен, вход в
http://127.0.0.1:8000/admin/работает
🎯 Цель этапа
На этом шаге мы создаём Django-приложение catalog, регистрируем его в проекте,
применяем начальные миграции (создают таблицы auth, admin, sessions и пр.) и
создаём суперпользователя. После шага у нас будет работающий Django Admin,
в который можно войти.
migrate Django применяет встроенные миграции всех INSTALLED_APPS:
создаются таблицы для пользователей, групп, сессий, логов действий Admin и пр.
Ваши миграции появятся позже — когда вы создадите модели в catalog.
После этого шага у нас будет
- Приложение
catalogв структуре проекта - Файл
db.sqlite3со всеми встроенными таблицами - Суперпользователь для входа в Admin
- Работающий сервер разработки:
http://127.0.0.1:8000/admin/
📄 Затрагиваемые файлы
| Файл | Действие | Описание |
|---|---|---|
catalog/ | Создать (startapp) | Новое Django-приложение |
config/settings.py | Изменить | Добавить "catalog" в INSTALLED_APPS |
db.sqlite3 | Создаётся migrate | База данных SQLite |
🔨 Шаги
1. Создаём Django-приложение catalog
python manage.py startapp catalog
Структура после команды:
library_catalog/
├── catalog/
│ ├── __init__.py
│ ├── admin.py # ← будем заполнять на шагах 04–05
│ ├── apps.py
│ ├── migrations/
│ │ └── __init__.py
│ ├── models.py # ← будем заполнять на шаге 03
│ ├── tests.py
│ └── views.py # ← будем заполнять на шаге 06
├── config/
│ └── ...
└── manage.py
2. Регистрируем приложение в settings.py
# config/settings.py — находим INSTALLED_APPS и добавляем "catalog"
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
# наши приложения
"catalog", # ← добавляем
]
INSTALLED_APPS.
Без регистрации makemigrations не найдёт модели из catalog,
Admin не увидит зарегистрированные модели, шаблоны из catalog/templates/
не загрузятся.
3. Применяем начальные миграции
python manage.py migrate
Django покажет список применяемых миграций:
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
...
Applying sessions.0001_initial... OK
4. Создаём суперпользователя
python manage.py createsuperuser
Django задаст вопросы интерактивно:
Username (leave blank to use 'admin'): admin
Email address: admin@example.com
Password: ••••••••
Password (again): ••••••••
Superuser created successfully.
5. Запускаем сервер разработки
python manage.py runserver
🧠 Объяснение логики
makemigrations vs migrate
makemigrations — читает ваши модели и создаёт файлы миграций
(Python-скрипты, описывающие изменения схемы БД).
migrate — применяет эти скрипты к реальной БД.
На этом шаге мы запускаем только migrate — применяем встроенные
миграции Django. Свои миграции появятся на шаге 03, когда создадим модели.
Почему суперпользователь важен
Суперпользователь имеет доступ ко всему Django Admin без явного назначения прав. В production-проекте суперпользователей должно быть минимум, а для сотрудников — создавать обычных пользователей с группами прав. В нашем учебном проекте один суперпользователь для удобства разработки.
runserver до migrate.
Django выдаст предупреждение: "You have N unapplied migration(s)..."
и некоторые функции Admin не будут работать. Всегда применяйте миграции перед запуском сервера.
✅ Проверка
1. Открываем Django Admin
http://127.0.0.1:8000/admin/
2. Ожидаемый результат
Диагностика: если что-то пошло не так
- Ошибка:
OperationalError: no such table: auth_user— не выполнена командаmigrate - Неверный логин/пароль в Admin — пересоздайте суперпользователя:
python manage.py createsuperuser - Ошибка:
catalog не найдено в INSTALLED_APPS(при makemigrations позднее) — проверьте правописание"catalog"в settings.py
➡️ Что дальше
На следующем шаге мы создадим модели: Author, Genre,
Publisher, Book, BookCopy.
Добавим ForeignKey, ManyToMany, OneToOne, правильные Meta,
__str__, валидаторы и full_clean().
Это закроет callout-verify из урока 15.
- Готово: приложение catalog, migrate, суперпользователь, Admin работает
- Далее (шаг 03):
catalog/models.py— все сущности библиотеки - После шага 03: запустим
makemigrationsи увидим наши таблицы