Назад в блог

Создание моделей Django: руководство

Создание моделей Django: руководство

Django — это известный веб-фреймворк для быстрой разработки безопасных и поддерживаемых веб-сайтов и веб-приложений. Созданный с использованием Python, Django упрощает веб-разработку, позволяя уделять больше времени и внимания написанию приложений, не изобретая велосипед каждый раз. Django — это бесплатный проект с открытым исходным кодом, надежной официальной документацией, отличной поддержкой сообщества и множеством бесплатных и платных вариантов поддержки.

В этом руководстве мы погрузимся в создание моделей Django. В Django модель является ключевым источником информации о ваших данных. Модели описывают поля и поведение сохраняемых данных. Django использует модель для генерации таблиц базы данных с помощью ORM (Object Relational Mapping), которые также называют моделями.

Предварительные требования

Мы работаем в операционной системе на базе Unix, предпочтительно облачном сервере Ubuntu 20.04 в качестве системы, на которой мы проводили тестирование. Если вы хотите настроить Django в аналогичной среде, обратитесь к нашему руководству «Как установить Django и настроить среду разработки на Ubuntu 20.04.”

Шаг 1. Среда разработки Python

Django построен на Python. Поэтому нам нужна надежная среда разработки Python со всеми необходимыми инструментами для работы с приложениями Python. Мы уже обсуждали это в специальном руководстве. Здесь мы проведем краткую демонстрацию.

Сначала запустите терминал и выполните следующие команды:

Затем установите pip – менеджер пакетов Python:

Затем установите некоторые дополнительные пакеты для разработки:

Django Models 1

Для создания виртуального окружения нам также понадобится модуль Python venv :

Шаг 2. Установка MySQL Server

MySQL — популярная реляционная система управления базами данных. Она имеет открытый исходный код, стабильна и богата функциями. Мы будем использовать MySQL в качестве сервера базы данных для нашего приложения Django. Установите MySQL с помощью APT:

Затем проверьте установку:

Django Models 2

Это всего лишь базовая настройка MySQL с параметрами по умолчанию. Ознакомьтесь с более подробным руководством по установке и настройке MySQL.

Шаг 3. Настройка приложения Django

Теперь мы готовы создать наше приложение Django. Если вас интересует более подробная демонстрация Django, обратитесь к нашему руководству «Установка веб-фреймворка Django на Ubuntu 20.04.”

Затем создайте специальный каталог для приложения. Имя каталога должно отражать имя проекта:

В каталоге проекта создайте виртуальное окружение Python с помощью модуля venv :

Активируйте виртуальное окружение:

Django Models 3

Установите Django с помощью pip:

Затем создайте новый проект Django с помощью команды django-admin :

django-admin

Шаг 4. Настройка приложения Django

Приложение Django содержит все конфигурации по умолчанию. Для нашей цели нам нужно внести некоторые корректировки.

Начните с редактирования конфигурационного файла settings.py:

Затем измените часовой пояс:

TIME_ZONE

Добавьте машины, которым разрешен доступ к серверу приложения Django:

ALLOWED_HOSTS

После этого примените изменения:

Django Models 4

Наконец, создайте суперпользователя для нашего веб-приложения Django:

python manage.py

Шаг 5. Подключение приложения Django к MySQL

Чтобы подключиться к MySQL, нам понадобится дополнительная библиотека коннектора Python, совместимая с Django. Мы будем использовать mysqlclient.

Сначала убедитесь, что у нас установлены необходимые пакеты:

python3-dev

Затем установите mysqlclient:

  • Создание выделенной базы данных

Для нашего приложения нам нужно создать выделенную базу данных и пользователя базы данных. Запустите оболочку MySQL от имени root:

sudo mysql -u rootСоздайте выделенную базу данных для нашего приложения Django:

Затем создайте выделенного пользователя базы данных для приложения Django:

Наконец, предоставьте выделенному пользователю полные права на выделенную базу данных:

GRANT ALL ON
  • Изменение конфигурации Django для использования MySQL

Теперь нам нужно изменить некоторые настройки Django, чтобы он мог использовать MySQL в качестве сервера базы данных. Откройте settings.py в текстовом редакторе:

Прокрутите вниз до раздела DATABASES и вставьте следующий код:

DATABASES

Затем отредактируйте конфигурационный файл MySQL, чтобы он содержал необходимые учетные данные базы данных:

Добавьте следующий блок в конец файла:

Django Models 5

Перезапустите MySQL, чтобы изменения вступили в силу:

Шаг 6. Создание модели Django

Теперь мы готовы создать новую модель в нашем проекте Django. Активируйте виртуальное окружение:

Находясь в этой папке, укажите Django создать новое приложение:

После создания дерево файлов должно выглядеть примерно так. Здесь файл models.py будет содержать код для нашей пользовательской модели Django:

Django Models 6

Проверьте текущее содержимое файла:

cat models.py

Для демонстрации мы создадим модель для постов в блоге под названием Post. Она будет содержать следующие поля:

  • title: Заголовок поста в блоге.
  • slug: Хранит и генерирует валидные URL-адреса для веб-страниц.
  • content: Текст поста в блоге.
  • created_on: Дата создания поста.
  • author: Пользователь, создавший пост.

Откройте файл models.py в текстовом редакторе:

Давайте импортируем некоторые необходимые API для нашей модели. По умолчанию импортируется API моделей. Нам также понадобятся API slugify для генерации слагов, User для аутентификации и reverse для более удобного и гибкого создания URL-адресов:

Затем добавьте класс под названием Post. Он будет содержать необходимые поля базы данных, такие как title, slug, content, created_on, и author:

Нам нужна функциональность для генерации URL и сохранения поста. Это важно, так как это генерирует уникальные ссылки, соответствующие уникальным постам:

Следующий раздел укажет модели, как упорядочивать посты и отображать их на веб-странице. Мы закодируем эту логику с помощью внутреннего класса Meta. Он будет содержать дополнительную логику модели, которая не касается определения полей базы данных:

Наконец, в этом файле у нас будет функция модели Comment. Для этого требуется добавить еще один класс Comment с использованием models.Model в качестве его сигнатуры. Он будет содержать следующие поля базы данных:

  • name: Имя комментатора.
  • email: Адрес электронной почты комментатора.
  • text: Содержимое самого комментария.
  • post: Пост, к которому был оставлен комментарий.
  • created_on: Время создания комментария.

Код будет выглядеть примерно так:

На данном этапе наш файл models.py будет выглядеть следующим образом:

models.py

Наконец, сохраните файл и закройте редактор.

Шаг 7. Обновление настроек Django

Модель создана. Однако нам нужно настроить некоторые конфигурационные файлы, чтобы запустить модель в работу. Внутри settings.py, нам нужно добавить нашу модель в INSTALLED_APPS.

Откройте settings.py в текстовом редакторе:

Зарегистрируйте новый модуль в разделе INSTALLED_APPS:

INSTALLED_APPS

Сохраните файл и закройте редактор.

Шаг 8. Миграция изменений

Теперь, когда мы добавили все желаемые модели, следующим шагом будет применение этих изменений. Django применит эти схемы к нашей базе данных MySQL.

Следующая команда сгенерирует все необходимые файлы миграции. Вывод покажет расположение всех этих файлов в каталоге проекта:

makemigrations

Следующая команда выведет список всех существующих миграций:

Django Models 6

Обратите внимание, что все миграции отмечены, за исключением 0001_initial, которая была создана как часть моделей Post и Comment.

Следующая команда покажет, какой SQL-запрос выполнит Django для создания миграций:

sample_app

Теперь нам осталось только применить миграции. Эти миграции запишут изменения в базу данных:

migrate

Шаг 9. Проверка изменений

Чтобы проверить изменения, давайте заглянем в нашу базу данных MySQL. Запустите оболочку MySQL от имени пользователя Django:

Затем измените текущую активную базу данных на базу данных приложения Django:

Выведите список всех таблиц из базы данных:

Наконец, чтобы увидеть содержимое любой из таблиц, используйте DESCRIBE запрос:

Django Models 7

Ограничения Django при работе с MySQL

При использовании MySQL в качестве сервера базы данных для вашего приложения Django следует иметь в виду несколько вещей:

  • Поддержка транзакций для процессов, изменяющих схему, практически отсутствует. Это означает, что в случае сбоя миграции потребуется вручную отменить все изменения, прежде чем пытаться выполнить другую миграцию. Невозможно откатиться к более ранней точке, когда неудачная миграция еще не была выполнена.
  • Для большинства процессов, изменяющих схему, MySQL полностью перезаписывает таблицы. В определенных ситуациях это может занять очень много времени. В худшем случае временная сложность будет пропорциональна количеству добавляемых строк или удаляемых столбцов. Согласно официальной документации Django, это может занять одну минуту на миллион строк.
  • MySQL накладывает ограничение на количество символов в именах столбцов, таблиц и индексов. Также существует ограничение на общий размер всех столбцов и покрытий индексов. Django может превысить этот лимит. Некоторые другие СУБД, помимо MySQL, могут справляться с более высокими лимитами Django.

Вот почему настоятельно рекомендуется взвесить все варианты и выбрать наиболее подходящий.

Заключение

В этом руководстве успешно продемонстрировано, как добавлять модули в существующее приложение Django. В качестве бэкенда для приложения мы использовали MySQL. Здесь также показаны некоторые ключевые концепции Django, такие как модели, принцип работы миграций и то, как Django преобразует модели в таблицы базы данных MySQL.

Приятной работы!

author

Hark Labs

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.