Ошибка 1: Приложение не зарегистрировано в INSTALLED_APPS
Симптом: Django не находит шаблоны, миграции не создаются, URL-маршруты работают, но приложение ведёт себя непредсказуемо.
# НЕПРАВИЛЬНО — приложение не добавлено
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
# first_app не добавлен!
]
# ПРАВИЛЬНО
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'first_app.apps.FirstAppConfig', # обязательно!
]
Ошибка 2: Забыт include() в корневом urls.py
Симптом: Браузер возвращает ошибку 404 при переходе на
/first/.
# НЕПРАВИЛЬНО — маршруты приложения не подключены
urlpatterns = [
path('admin/', admin.site.urls),
# first_app.urls не подключён!
]
# ПРАВИЛЬНО
from django.urls import path, include # не забыть импортировать include!
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('first_app.urls')),
]
Ошибка 3: Неверный тип данных при чтении из .env
Симптом:
DEBUG всегда равен строке 'True' даже если в .env написано DEBUG=False. Django считает непустую строку как True.
# НЕПРАВИЛЬНО — возвращает строку, не bool
DEBUG = env('DEBUG') # строка 'True' или 'False'
ALLOWED_HOSTS = env('ALLOWED_HOSTS') # строка '127.0.0.1,localhost'
# ПРАВИЛЬНО — используем типизированные методы
DEBUG = env.bool('DEBUG', default=False)
ALLOWED_HOSTS = env.list('ALLOWED_HOSTS', default=[])
Ошибка 4: Env.read_env() не вызван
Симптом:
KeyError или ImproperlyConfigured — переменная SECRET_KEY не найдена.
# НЕПРАВИЛЬНО — .env не загружен
from environ import Env
env = Env()
# Env.read_env() не вызван!
SECRET_KEY = env('SECRET_KEY') # KeyError!
# ПРАВИЛЬНО
from environ import Env
env = Env()
Env.read_env(BASE_DIR / '.env') # загружаем .env
SECRET_KEY = env('SECRET_KEY')
Ошибка 5: manage.py запущен не из нужной папки
Симптом:
ModuleNotFoundError: No module named 'config' или похожая ошибка импорта.
# НЕПРАВИЛЬНО — запуск из папки config/
cd config
python manage.py runserver # ошибка!
# ПРАВИЛЬНО — запуск из папки где лежит manage.py
cd my-django-project # корень проекта (здесь лежит manage.py)
python manage.py runserver
Ошибка 6: Неправильное имя view в urls.py
Симптом:
AttributeError: module 'first_app.views' has no attribute 'first_app'
# НЕПРАВИЛЬНО — в конспекте источника была опечатка:
urlpatterns = [
path('first/', views.first_app, name='first_app'), # first_app != first_view!
]
# ПРАВИЛЬНО — имя функции должно совпадать с определённой во views.py:
urlpatterns = [
path('first/', views.first_view, name='first_view'),
]
В источнике практикума (задание 10) в решении указано
views.first_app, тогда как функция определена как first_view. Используйте first_view — это корректное имя из задания 9.
Ошибка 7: mysqlclient не установлен при MYSQL=True
Симптом:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'
# РЕШЕНИЕ
pip install mysqlclient
На Windows установка mysqlclient может потребовать Visual C++ Build Tools. В качестве альтернативы можно использовать PyMySQL:
pip install PyMySQL
# В config/__init__.py
import pymysql
pymysql.install_as_MySQLdb()
⚠️ Проверить по документации: актуальные рекомендации по MySQL-драйверу для Django 5.x могут отличаться. Проверьте Django docs: MySQL notes.