Django — это веб-фреймворк высокого уровня, написанный на языке программирования Python и построенный на шаблоне проектирования MVC (Model, View, Controller).
По сути, Django является некой программной платформой (каркасом), компонентами которой управляет разработчик. К составным частям Django относятся:
графический интерфейс;
программные скрипты элементов приложения;
мультимедиа (фото, видео, аудио);
базы данных.
Таким образом, сам фреймворк является «ядром» приложения, а периферические настраиваемые модули (компоненты) формируют конкретную функциональность приложения.
В этом руководстве мы сфокусируемся на одной из важных составляющих любого приложения — базе данных, в которой хранится информация о контенте и пользователях.
Сперва мы подготовим окружение (установим Python и Django), после чего настроим облачную базу данных MySQL и подключим ее к Django. Технологический стек будет развернут на виртуальном сервере Timeweb Cloud под управлением операционной системы Ubuntu 22.04.
Обновим список доступных репозиториев:
sudo apt update
А также обновим установленные в системе пакеты:
sudo apt upgrade -y
Перед установкой Python сперва лучше проверить, есть ли он уже в системе:
python3
Если Python уже установлен, в консоли появится соответствующее сообщение, а также откроется режим ввода команд Python:
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
В этом случае просто выходим из Python:
quit()
Обратите внимание, что в этой инструкции используется версия Python 3.10.12.
Если же Python отсутствует в системе, устанавливаем его через пакетный менеджер APT:
sudo apt install -y python3
Флаг -y
используем для автоматического ответа «yes» на все возникающие во время установки вопросы.
Чтобы убедиться в корректности установки, запрашиваем версию Python:
python3 --version
Результат консольного вывода должен быть примерно таким:
Python 3.10.12
Разумеется, ваша версия Python может иметь отличия, однако она должна поддерживать версию используемого фреймворка Django.
Для работы приложения на Django нам потребуется инструмент для создания виртуальной среды Python:
sudo apt install python3-venv -y
Он будет использован непосредственно перед инициализацией приложения.
Некоторые модули для последней версии Python, которые будут установлены далее, доступны для загрузки только через пакетный менеджер Pip. Поэтому установим его:
sudo apt install python3-pip -y
Для проверки корректности установки проверим версию менеджера:
pip -V
В консоли должно появиться примерно такое сообщение:
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
В этом руководстве использовался Pip версии 22.0.2.
Для проекта Django создадим отдельный каталог, в котором будут размещаться исходники:
sudo mkdir work
Сразу же перейдем в созданную директорию:
cd work
И подготовим в ней виртуальную среду Python:
python -m venv venv
Проверим состояние каталога проекта:
ls
Если все прошло успешно, внутри появится папка виртуальной среды:
venv
Теперь выполним активацию виртуальной среды:
source ~/work/venv/bin/activate
Виртуальная среда создана! Теперь можно перейти к инициализации рабочих каталогов Django.
Для того, чтобы приложение Django могло взаимодействовать с базой данных MySQL, необходимо установить специальный модуль, служащий дополнением к Python.
При этом предварительно нужно поставить некоторые зависимости:
sudo apt install python3-dev default-libmysqlclient-dev build-essential pkg-config -y
После этого загружаем сам клиент MySQL через Pip:
pip install mysqlclient
При этом сам модуль является частью Python, а не веб-фреймворка Django.
Установим фреймворк Django также через пакетный менеджер APT:
python -m pip install Django
После чего проверим корректность установки, запросив версию фреймворка:
django-admin --version
Если все прошло успешно, в консоли появится примерно такое сообщение:
5.0.3
В этой инструкции используется версия Django 5.0.3. Возможно ваша версия будет иметь отличия, однако она должна поддерживаться установленным в системе интерпретатором Python.
Сперва нужно пояснить, что любые разработки на Django состоят из двух абстрактных сущностей, в понимании которых может возникнуть путаница:
Проект. Это программа на Django в целом, которая состоит из некоторых частей — приложений.
Приложение. Это своего рода компонент проекта. Как правило, в приложение изолируется узкий набор функций.
Поэтому мы последовательно инициализируем каталог проекта и каталог приложения, а далее отредактируем сгенерированный файл настроек, вручную указав Django, что созданное приложение связано с созданным проектом.
Сперва создадим специальную директорию проекта:
django-admin startproject project .
В данном случае project
— имя проекта, которое может быть произвольным. Однако нельзя использовать названия встроенных компонентов Python и Django. Например, при использовании имени test
возникнет ошибка из-за конфликта со стандартным пакетом Python.
Также не забудьте добавить точку (.
) в конце команды создания. Если этого не сделать, Django создаст дополнительный вложенный каталог проекта — внутри директории project
будет еще одна директория project
.
Проверим рабочий каталог:
ls
В нем должна появиться директория созданного проекта с соответствующим именем:
project manage.py venv
Перейдем в каталог приложения:
cd project
И посмотрим на его состояние:
ls
В консоли появится список основных файлов проекта Django:
asgi.py __init__.py settings.py urls.py wsgi.py
Файл settings.py
является основным конфигурационным файлом Django — именно в нем соединяется проект с приложением, а также указываются данные для доступа к внешней базе данных.
Поднимемся на уровень выше в каталог work
:
cd ..
После чего инициализируем каталог приложения с помощью ранее появившейся утилиты управления manage.py
:
python manage.py startapp application
Теперь проверим состояние директории work
:
ls
Как видно, рядом с каталогом проекта project
появился каталог приложения application
:
application manage.py project venv
Обратите внимание, что application
находится на том же уровне, что и project
, а не внутри него.
Теперь мы должны подключить созданное приложение к проекту Django. Для этого мы перейдем в каталог проекта:
cd project
После чего откроем основной файл настроек проекта — settings.py
:
sudo nano settings.py
Здесь нам нужно найти переменную INSTALLED_APPS
и видоизменить ее до следующего состояния:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'application.apps.ApplicationConfig',
]
По сути, мы добавили еще одну строку в массив. В этой строке префиксы application
и Application
(тот, который ApplicationConfig
) указывают на название созданного приложения.
В этом же файле найдем другую переменную ALLOWED_HOSTS
и добавим в нее IP-адрес удаленного сервера (в этом руководстве используется облачный сервер Timeweb Cloud), на который была выполнена установка Django.
Например, отредактированная переменная может выглядеть так:
...
ALLOWED_HOSTS = ['90.156.208.243']
...
Сохраняем и выходим. Теперь можно вернуться обратно на уровень выше:
cd ..
Перед запуском сервера выполним команду предварительной миграции базы данных Django, чтобы в консоли не возникало ошибок:
python3 manage.py migrate
По умолчанию Django работает со SQLite, однако чуть позже мы заменим ее на MySQL и повторно выполним миграцию.
Теперь создадим пользователя Django:
python3 manage.py createsuperuser
В консольном терминале появится предложение ответить на несколько вопросов:
Username (leave blank to use 'root'):
Email address: any.email@domain.ru
Password:
Password (again):
Superuser created successfully.
Таким образом, заполняем следующую информацию:
Имя пользователя
Пароль
Пароль (повторно)
Далее запустим непосредственно сам сервер:
python manage.py runserver 0.0.0.0:80
Обратите внимание, что мы запускаем сервер на 80 порту (вместо стандартного 8000 порта, который использует Django по умолчанию) для того, чтобы иметь возможность открыть сайт через браузер без явного указания порта в адресной строке.
Далее открываем браузер и вводим адрес вашего удаленного сервера в браузер. Например, адрес может быть таким:
http://90.156.208.243
Запущенный сервер должен возвращать стандартную страницу Django, сообщающую об успешной установке фреймворка.
Также вы можете зайти в панель администратора Django, введя в адресную строку браузера следующий адрес:
http://YOUR_IP/admin
Например, адрес может быть таким:
http://90.156.208.243/admin
После этого в окне браузера появится форма авторизации, в которую необходимо ввести логин и пароль, указанные при создании пользователя Django.
Сама админ-панель выглядит просто и показывает только таблицу с пользователями, группы доступа и историю последних действий.
В дальнейшем, по ходу роста сложности программной базы вашего приложения, админ-панель Django будет увеличивать количество таблиц и элементов.
Пока что можно выключить сервер Django, нажав на клавиатуре сочетание клавиш Ctrl + C.
В этой инструкции будет использоваться облачная база данных MySQL, размещенная на инфраструктуре Timeweb Cloud. Процесс создания, настройки, управления и работы с базой данных будет выполняться через графический интерфейс панели управления.
Соответственно необходимо предварительно авторизоваться на странице входа в Timeweb Cloud.
Чтобы перейти к созданию базы данных, нужно выполнить несколько действий в панели управления Timeweb Cloud:
В левом меню перейти во вкладку Базы данных
В открывшемся разделе нажать на кнопку Создать
После этого вы окажетесь на странице создания (конфигурации) базы данных, где Timeweb Cloud предложит вам выбрать конкретный тип БД, локацию серверов, мощность по тарифу и ряд сетевых настроек:
На момент написания этой инструкции доступны следующие типы баз данных:
MySQL
PostgreSQL
Redis
MongoDB
OpenSearch
ClickHouse
Kafka
RabbitMQ
В этой инструкции мы будем использовать MySQL, размещенную на серверах в Санкт-Петербурге. Тарифный план можно выбрать индивидуально в зависимости от предполагаемых нагрузок вашего проекта.
В самой нижней части страницы создания БД нужно заполнить информацию о базе данных:
Название
Пароль (для лучшей безопасности рекомендуется использовать генерацию)
Стоимость аренды будет рассчитываться на основе выбранных настроек, отображаясь на кнопке Заказать. По окончании конфигурации жмем на нее.
После этого вас перекинет на страницу управления базой данных. Первые несколько минут база будет находиться в статусе Запуск, после чего перейдет в состояние Включена.
На странице управления БД перейдем во вкладку Базы данных, которая расположена в верхнем горизонтальном (а не левом вертикальном) меню.
Для начала удалим уже существующую БД default_db
. Для этого жмем на 3 точки справа и выбираем Удалить из выпадающего списка. Во всплывающем окне подтверждаем удаление с помощью кнопки Да, удалить.
После этого создадим новую базу данных, нажав на кнопку Добавить. В названии указываем django_db
и жмем кнопку Создать.
Далее переходим во вкладку Пользователи
, чтобы назначить права доступа для созданной БД.
Обратите внимание, что на этой странице указаны имя и пароль пользователя БД, которые мы указывали (только пароль, имя стандартное) при создании базы данных. Впоследствии их нужно будет внести в конфигурационный файл Django, поэтому запомните их местонахождение в панели управления.
Жмем на 3 точки справа от существующего стандартного пользователя, после чего в выпадающем списке выбираем Привилегии.
На открывшейся странице база данных django_db
будет уже выбрана, т.к. других БД не существует. Активируем все переключатели, наделяя пользователя всеми возможными полномочиями — по крайней мере, в рамках этой инструкции.
В дальнейшем права доступа можно будет настроить конкретно под задачи вашего проекта.
Теперь созданную базу данных можно подключать к проекту Django.
Теперь нам необходимо обеспечить коммуникацию приложения Django с базой данной MySQL.
Для этого мы откроем конфигурационный файл приложения Django:
sudo nano ./project/settings.py
Найдем внутри параметр DATABASES
и перезапишем его следующим содержимым:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'HOST': '92.51.37.252',
'PORT': 3306,
'USER': 'gen_user',
'PASSWORD': 'some_password'
}
}
В соответствующих параметрах мы указали:
Название «коннектора», который будет использоваться для коммуникации Django с MySQL
Имя созданной БД
Адрес облачной базы данных Timeweb Cloud
Стандартный порт MySQL
Пользователь MySQL, которого мы наделили правами доступа
Пароль пользователя MySQL
Теперь можно снова выполнить миграцию базы данных:
python3 manage.py migrate
После чего запустить сервер:
python manage.py runserver 0.0.0.0:80
Если все предыдущие этапы были выполнены корректно, в консоли появится стандартное сообщение о запуске:
Performing system checks...
System check identified no issues (0 silenced).
February 20, 2024 - 00:56:50
Django version 3.2.12, using settings 'application.settings'
Starting development server at http://0.0.0.0:80/
Quit the server with CONTROL-C.
При этом стандартная страница приложения Django опять станет доступна в браузере по IP-адресу вашего сервера.
В этой инструкции было рассмотрено подключение облачный базы данных MySQL от Timeweb Cloud к самому простому проекту на веб-фреймворке Django.
В частности, было подробно показано, как:
Установить последнюю стабильную версию Python (в нашем случае это была версия 3.10.12)
Установить соответствующую версию фреймворка Django (была использована версия 5.0.3)
Подготовить виртуальную среду (venv) Python, в которой будет работать приложение Django
Инициализировать каталог проекта Django
Инициализировать каталог приложения Django
Выполнить базовую конфигурацию приложение Django
Создать и сконфигурировать базу данных MySQL через панель управления Timeweb Cloud
Подключить базу данных MySQL к приложению Django
Более подробную информацию (туториалы, гайды, документацию) о продвинутом использовании Django можно найти на официальном сайте фреймворка.