Django — это бесплатный веб-фреймворк с открытым исходным кодом, созданный на Python. Впервые опубликованный в 2005 году, Django воплощает в себе девиз «быстрая разработка и чистый, прагматичный дизайн». Фреймворк, развернутый на веб-сервере, позволяет быстро создавать веб-интерфейс с богатым функционалом, безопасностью и масштабируемостью.
Любое веб-приложение использует базы данных для хранения своего контента. Django, будучи современным фреймворком, поддерживает ряд стандартных систем управления базами данных, например, PostgreSQL, SQLite, MySQL и т. д. В этом руководстве будет показано, как подключить приложение Django к базе данных MySQL.
Предварительные требования
Чтобы следовать этому руководству, вам необходимо выполнить определенные предварительные условия перед переходом к Django и подключению к базе данных:
- Подходящий веб-сервер. В этом руководстве мы будем использовать сервер Ubuntu.
- Правильно настроенная среда разработки Python 3.
- Приложение базы данных. Вот подробное руководство по установке и использованию MySQL.
Установка и настройка Python 3
Django написан на Python. Для запуска любого приложения Python требуется, чтобы в системе были установлены исполняемые файлы Python. В Ubuntu Python установлен по умолчанию. Здесь мы будем использовать Python 3. В терминале выполните следующие команды. Сначала обновите кэш APT и обновите (если доступно) все установленные пакеты:
|
1 |
$ sudo apt update && sudo apt upgrade -y |
Python 3 доступен напрямую из официальных репозиториев пакетов Ubuntu. Пакет
python-is-python3 создает символическую ссылку python на исполняемый файл
python3 для удобства использования:
|
1 |
$ sudo apt install python3 python-is-python3 |
Затем проверьте, прошла ли установка успешно:
|
1 2 |
$ python3 --version $ python --version |
После этого нам понадобится pip. Это стандартный менеджер пакетов Python. Он отвечает за управление дополнительными библиотеками Python, которые не входят в стандартную библиотеку. Обратите внимание, что мы устанавливаем pip3 (for Python 3):
|
1 |
$ sudo apt install python3-pip |
Наконец, нам понадобятся некоторые дополнительные пакеты для создания надежной среды программирования:
|
1 |
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev |
Установка и настройка MySQL
В этом разделе будет кратко показана установка и настройка MySQL. Он доступен в стандартных репозиториях пакетов Ubuntu:
|
1 |
$ sudo apt install mysql-server |
Если установка прошла успешно, MySQL начнет работать в фоновом режиме. Проверьте, правильно ли он работает:
|
1 |
$ systemctl status mysql |
Сервер MySQL запущен и работает. Теперь мы можем безопасно перейти к разработке нашего приложения Django.
Работа с Django
-
Создание демонстрационного приложения Django
Основой нашего веб-приложения является скелет проекта Django. Он содержит все необходимые инструменты и библиотеки, требуемые для создания надежного веб-приложения. Сначала мы создадим отдельный каталог для нашего приложения Django. Рекомендуется дать каталогу осмысленное имя, соответствующее приложению, которое мы собираемся создать. В этой демонстрации мы назовем его myDemoApp:
|
1 |
$ mkdir -pv myDemoApp |
Нам понадобится модуль Python venv для создания виртуального окружения внутри каталога. Установите модуль с помощью APT:
|
1 |
$ sudo apt install python3-venv |
Затем перейдите в каталог и создайте виртуальное окружение. Для ясности мы назвали окружение demoapp_env:
|
1 |
$ python3 -m venv demoapp_env |
Затем активируйте виртуальное окружение, запустив activate скрипт:
|
1 |
$ . demoapp_env/bin/activate |
Теперь мы установим Django внутри этого выделенного виртуального окружения. Pip скачает и установит некоторые дополнительные компоненты:
|
1 |
$ pip install django |
Django установлен и готов к использованию. Вызовите команду django-admin для создания нового проекта Django. После этого дайте приложению подходящее имя:
|
1 |
$ django-admin startproject demoapp |
Будет создан демонстрационный проект с необходимыми файлами и директориями проекта:
|
1 |
$ ls -l |
Каркас проекта готов. Далее нам нужно правильно настроить его для достижения нашей цели.
-
Редактирование настроек проекта Django
Все конфигурации проекта хранятся в файле settings.py. Он находится в директории проекта Django. Мы начнем с установки правильного часового пояса и списка хостов, которые могут подключаться к приложению Django. Откройте конфигурационный файл в текстовом редакторе:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Прокрутите скрипт вниз и найдите запись TIME_ZONE. Для демонстрации часовой пояс установлен на America/New_York:
|
1 |
$ TIME_ZONE = 'America/New_York' |
Для справки, следующая команда выведет список всех поддерживаемых часовых поясов в Linux:
|
1 |
$ timedatectl list-timezones |
Далее прокрутите до записи ALLOWED_HOSTS. Она определяет, какие машины могут иметь доступ к приложению. Для демонстрации она содержит только localhost:
|
1 |
$ ALLOWED_HOSTS = ['localhost'] |
Затем сохраните файл и закройте редактор. Следующая команда применит изменения:
|
1 |
$ python manage.py migrate |
Теперь нам нужно создать учетную запись администратора для веб-приложения. Эта учетная запись будет использоваться для доступа к панели администратора Django. Выполните следующую команду:
|
1 |
$ python manage.py createsuperuser |
Потребуется ввести имя пользователя, email и пароль. Теперь приложение готово к подключению к базе данных.
Подключение к MySQL
-
Установка коннекторов MySQL и библиотек разработки
Чтобы интегрировать MySQL в приложение Django, нам понадобятся дополнительные библиотеки Python 3, которые предоставят необходимые инструменты. Мы будем использовать коннектор базы данных mysqlclient. Это форк MySQLdb.
Убедитесь, что у нас установлен python3-dev :
|
1 |
$ sudo apt install python3-dev |
Нам также понадобятся дополнительные заголовочные файлы и библиотеки Python и MySQL:
|
1 |
$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev |
После завершения установки используйте pip для установки модуля Python mysqlclient. Могут возникнуть сообщения об ошибках, которые можно проигнорировать:
|
1 |
$ pip install mysqlclient |
-
Настройка выделенной базы данных
Следующим шагом является настройка выделенной базы данных и пользователя базы данных для нашего приложения Django. Запустите оболочку MySQL от имени пользователя root :
|
1 |
$ sudo mysql -u root |
Чтобы проверить все доступные на данный момент базы данных, выполните следующий запрос:
|
1 |
$ SHOW DATABASES; |
Давайте создадим выделенную базу данных для нашего приложения Django. Дайте ей подходящее имя, соответствующее названию проекта:
|
1 |
$ CREATE DATABASE demoapp_data; |
Затем проверьте создание:
|
1 |
$ SHOW DATABASES; |
Теперь создайте выделенного пользователя MySQL. Мы настроим этого пользователя как владельца базы данных. Приложение Django будет использовать учетные данные этого пользователя для работы с базой данных MySQL:
|
1 |
$ CREATE USER 'demoapp_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Предоставьте пользователю demoapp_user полные права на базу данных demoapp_data:
|
1 |
$ GRANT ALL ON demoapp_data.* TO 'demoapp_user'@'%'; |
Чтобы изменения прав вступили в силу, перезагрузите MySQL grant tables:
|
1 |
$ FLUSH PRIVILEGES; |
Теперь база данных готова к подключению к приложению Django.
-
Подключение базы данных к приложению Django
Наконец, мы настроим приложение Django на использование базы данных для хранения данных. Откройте конфигурационный скрипт settings.py:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Прокрутите вниз до записи DATABASES и введите следующий код:
|
1 2 3 4 5 6 7 8 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/etc/mysql/my.cnf', }, } } |
Сохраните файл и закройте редактор. Следующий шаг — настроить конфигурационный файл, описанный в коде ранее. Используйте sudo для открытия текстового файла в указанном месте:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
Этот конфигурационный файл будет содержать информацию о выделенной базе данных Django и пользователе, которого мы создали на сервере MySQL. Добавьте следующие строки в конец файла:
|
1 2 3 4 5 |
[client] database = demoapp_data user = demoapp_user password = password123 default-character-set = utf8 |
Чтобы изменения вступили в силу, нам нужно перезапустить сервер MySQL:
|
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl restart mysql |
-
Тестирование подключения к MySQL
Теперь пришло время проверить, правильно ли работает подключение к MySQL. Если сервер Django запускается без проблем, значит, подключение работает нормально. В противном случае что-то не так. Сначала примените все изменения, внесенные в проект Django:
|
1 |
$ python manage.py migrate |
Теперь перейдите в следующий каталог проекта и запустите сервер Django:
|
1 2 |
$ cd ~/myDemoApp/demoapp $ python manage.py runserver <server_ip_address>:8000 |
Затем попробуйте получить доступ к серверу из веб-браузера:
|
1 |
$ http://<server_ip_address>:8000 |
Вуаля! Мы успешно перешли на страницу приветствия Django. Это также подтверждает, что подключение к MySQL работает правильно. После завершения задачи вы можете безопасно выйти из виртуального окружения:
|
1 |
$ deactivate |
Заключение
В этом руководстве вы узнали основы совместного использования Django и MySQL. Мы создали приложение Django и показали, как подключить его к базе данных MySQL. Секрет кроется в конфигурационном файле Django settings.py. Мы также изменили некоторые базовые настройки, такие как ALLOWED_HOSTS и TIME_ZONE. Django невероятно гибок. Помимо MySQL, он также поддерживает другие SQL-серверы, такие как PostgreSQL, веб-серверы, такие как Nginx, и т. д.
Вы также можете ознакомиться с нашими руководствами по лучшим практикам установки, настройки и работы с Django:
- Установка веб-фреймворка Django на Ubuntu 20.04
- Настройка Django с PostgreSQL, Nginx и Gunicorn на Ubuntu 20.04
- Создание моделей Django: руководство
Приятной работы!





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