Установка и первоначальная настройка
Установка
pip install Django
Проверка версии
python -m django --version
Создание проекта
python -m django startproject projectname
Запуск веб-сервера
cd projectname
python manage.py runserver
Можно запустить с кастомными параметрами:
python manage.py runserver 127.0.0.1:8001 --settings=projectname.settings
Создание первоначальной миграции:
python manage.py makemigrations
Синхронизация базы данных с новой моделью:
python manage.py migrate
Если таблица уже существует, можно использовать флаг –fake:
python manage.py migrate –fake
Структура проекта Django
Внешний каталог projectname/ является контейнером проекта и содержит следующие файлы:
manage.py- утилита командной строки для взаимодействия с проектом. Редактировать не требуется.projectname/- папка проекта содержащая:__init__.py- пустой файл, указывающий Python, что каталог следует рассматривать как модуль.asgi.py- конфигурация для запуска проекта как ASGI-приложения (асинхронный стандарт).settings.py- настройки и конфигурация проекта (включая значения по умолчанию).urls.py- шаблоны URL-адресов, сопоставленные с представлениями.wsgi.py- конфигурация для запуска проекта как WSGI-приложения (синхронный стандарт).
Основные параметры settings.py
Файл settings.py содержит конфигурацию проекта. Все возможные параметры и значения по умолчанию описаны в официальной документации Django.
Ключевые настройки
-
DEBUG- Булево значение. При True django показывает подробные страницы ошибок. Нельзя включать в продакшене. -
ALLOWED_HOSTS- Список разрешённых доменов/хостов. Игнорируется при DEBUG=True. Обязателен при DEBUG=False. -
INSTALLED_APPS
Список активных приложений. По умолчанию включены:django.contrib.admin- админкаdjango.contrib.auth- аутентификацияdjango.contrib.contenttypes- типы контентаdjango.contrib.sessions- сессииdjango.contrib.messages- система сообщенийdjango.contrib.staticfiles- управление статическими файлами
-
MIDDLEWARE- промежуточные компоненты (middleware). ROOT_URLCONF- модуль Python с корневыми шаблонами URL.DATABASES- словарь с настройками подключений к БД. По умолчанию используется SQLite3.LANGUAGE_CODE- язык проекта (например, ‘en-us’ или ‘ru-ru’).USE_TZ- включает/выключает поддержку часовых поясов (True по умолчанию).
Подключение к MySQL
Пример конфигурации в settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname',
'USER': 'user',
'PASSWORD': '***',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
Для работы с MySQL требуется установка дополнительных пакетов:
pip install cryptography
Также рекомендуется установить mysqlclient или PyMySQL
Проект vs Приложение
- Проект - это экземпляр Django с настройками (
settings.py,urls.pyи т.д.). - Приложение - модульная часть функциональности (например, блог, форум), состоящая из моделей, представлений, шаблонов и URL-маршрутов. Приложения переиспользуемы между проектами.
Создание приложения
Выполнить в корне проекта:
python manage.py startapp blog
Структура приложения blog/:
blog/
├── __init__.py
├── admin.py
├── apps.py
├── migrations/
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
Описание файлов:
__init__.py- делает каталог Python-пакетом.admin.py- регистрация моделей в админке.apps.py- конфигурация приложения (BlogConfig).migrations/- миграции базы данных.models.py- определение моделей данных.tests.py- модульные тесты.views.py- логика обработки HTTP-запросов.
Активация приложения
Добавить приложение в INSTALLED_APPS в settings.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog.apps.BlogConfig', # <-- добавлено
]
Теперь Django будет учитывать модели и другие компоненты приложения blog.
Миграции и модели
После создания или изменения модели (например, в blog/models.py) нужно выполнить:
python manage.py makemigrations
Django создаст файл миграции (например, blog/migrations/0001_initial.py), содержащий SQL-инструкции.
Применить миграцию:
python manage.py migrate
Имя таблицы формируется как
_ (например, blog_post).
Можно задать своё имя через db_table в классе Meta модели.
Если вносятся изменения в models.py (добавление/удаление/изменение полей), нужно повторить makemigrations.
Административный сайт
Админка (django.contrib.admin) уже включена в INSTALLED_APPS.
Создание суперпользователя:
python manage.py createsuperuser
Затем нужно зарегистрировать свои модели в blog/admin.py, чтобы они отображались в админке.
Полезные замечания
- В
models.pyпараметрunique=Trueгарантирует уникальность значений поля. - Конвертация MySQL → SQLite возможна с помощью скрипта:
https://github.com/dumblob/mysql2sqlite