30 ноября 2025 г.
34

Django начало работы

Установка и первоначальная настройка

Установка

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