Растущая с каждым годом популярность высокоуровневого языка разработки веб-приложений Python стимулирует появление и развитие средств создания сайтов на его основе. Одним из таких Фреймворков является система Django, поддерживаемая разработчиками некоммерческой организации Django Software Foundation и которая уже успела зарекомендовать себя в качестве универсального и неординарного средства для разработки крупных веб-приложений. Рассмотрим основные возможности указанного Фреймворка и продемонстрируем процесс его развёртывания на VPS-сервере под управлением Ubuntu 22.04.
Основные концепции построения веб-Фреймворков
Такие программные системы позволяют программистам конфигурировать сколь угодно сложные веб-приложения, используя технологии и методы, определяемые языком разработки системы, а также заложенными концепциями её построения. Наиболее популярные из них основаны на модели MVC (Model View Controller), определяющей три независимых уровня функционирования системы – модель, представление и обработка. Это позволяет разработчику отвлечься от выполнения технических задач, не связанных непосредственно с созданием веб-проекта, чем в значительной степени сэкономить свои временные ресурсы и повысить качество продукта.
Другой важной концепцией построения современных средств разработки веб-приложений является использование эффективного метода доступа к базам данных, без которых не может обойтись ни одна из систем. Наиболее распространенным средством является использование SQL-запросов для обращения к данным, хранящимся на уровне модели, согласно MVC. Однако, недостатком подхода является громоздкость создаваемых запросов и, соответственно, снижение эффективности работы.
Ещё одним показателем современных систем указанного типа является модульность подхода в их построении, что позволяет минимизировать объём результирующего кода программного продукта и упростить управление большим количеством веб-приложений. В этом случае один и тот же модуль, к примеру, Панель администрирования, может использоваться сразу несколькими приложениями, значительно экономя на этом технические ресурсы.
Фреймворк Django в значительной степени отвечает всем указанным выше требованиям и даже в некоторых аспектах превосходит их. В частности, это касается организации взаимодействия с базами данных, когда вместо создания объёмного кода на языке SQL, программист имеет возможность использовать высокоуровневые методы языка Python для обращения к базе. Это достигается за счёт использования Django собственного механизма объектно-реляционного отображения данных при взаимодействии с базой данных, когда над уровнем формирования SQL-запросов создаётся новый уровень под названием Query Builder, на котором и выполняются необходимые преобразования. При этом также остаётся возможность работы с SQL-запросами в случае крайней необходимости.
Возможности Фреймворка Django
Можно выделить следующие характеристики Фреймворка, которые являются для него наиболее показательными:
- Модульный подход к построению структуры веб-приложения;
- Общая многоязыковая Панель администрирования;
- Расширяемая система шаблонов с наследованием;
- Поддержка системы кэширования;
- Развитая система фильтрации;
- Собственный API для доступа к базам данных;
- Подключение внешних модулей аутентификации.
Подготовка программной среды для развёртывания Django
Перед установкой любого программного продукта необходимо выполнить ряд требований по составу программного окружения. Для Django список требований будет иметь следующий вид:
- Обновление системы;
- Установка поддерживаемой версии языка Python;
- Формирование виртуального окружения и его активация;
- Установка менеджера пакетов PIP.
Выполним поочерёдно указанные требования.
Обновление системы
Работать будем под учётной записью суперпользователя, когда не требуется указание приставки sudo в командах. Однако, мы будем её использовать с целью показать необходимость наличия прав администратора для выполнения конкретной команды.
Для начала, обновим список пакетов для обновления. Для этого наберём в терминале:
$ sudo apt update
Список составил 79 пакетов. Обновим их:
$ sudo apt upgrade
Подтвердим выделение дополнительных 51,8 Mb дискового пространства и продолжим процесс обновления.
Обновление прошло успешно!
Установка поддерживаемой версии языка Python
Просмотреть какая версия Python необходима для работы выбранной версии Django, можно по следующей ссылке. Мы хотим установить версию программы 4.0 или выше, а, значит, версия языка Python должна быть 3.8, 3.9 или 3.10.
Введём в терминале соответствующую команду:
$ sudo apt install python3
Видим, что Python уже установлен на этой машине. Его версия – 3.10.6, что вполне удовлетворяет заявленным требованиям разработчиков Django.
Формирование виртуального окружения и его активация
Python поддерживает функцию создания отдельного программного окружения для каждого из разрабатываемых проектов, что позволяет вести независимую разработку и тестирование каждого из них. Для реализации этой возможности необходимо подготовить каталог виртуального окружения, который одновременно будет являться местом хранения системных файлов и папок Django.
Создадим этот каталог и перейдём в него. Для этого наберём в терминале:
$ mkdir testdjango
$ cd testdjango
Теперь нашим текущим каталогом стал каталог testdjango.
После этого необходимо установить плагин системы Python, который отвечает за работу виртуального окружения. Для всех операционных систем семейства Debian поддерживается следующий синтаксис команды установки указанного плагина:
$ sudo apt install python3.10-venv
Подтверждаем выделение дополнительных 2,882 Kb дискового пространства и продолжаем установку.
Установка прошла успешно! Теперь можно приступать непосредственно к созданию виртуального окружения Python для каталога testdjango. Для этого воспользуемся следующей командой:
$ python3 -m venv virtenv
Где virtenv – имя директории, в которой будут храниться системные файлы окружения. Вообще же, такая директория может иметь любое имя.
Как видим, команда выполнена успешно, а, значит, каталог виртуального окружения был создан.
Следует иметь ввиду, что виртуальное окружение не активируется автоматически при каждом переходе в соответствующий каталог. Для его активации необходимо запустить один из сценариев, хранящийся в системной папке bin каталога виртуального окружения. Запустим этот сценарий:
$ source virtenv/bin/activate
В результате, виртуальное окружение для каталога testdjango успешно активировалось. Признаком этого является наличие в командной строке названия каталога virtenv в скобках.
Установка менеджера пакетов PIP
Любая из технологических платформ, в том числе и Python, имеет предпочтительный протокол или пакетный менеджер по управлению своими программными пакетами. Для Python таким менеджером является протокол PIP (Package Installer for Python), ориентированный на работу c Python-пакетами. Именно он даёт возможность обеспечить быстрое формирование идентичного программного окружения на многих машинах с помощью заранее подготовленного файла со списком нужных пакетов для установки.
Установим этот протокол с помощью следующей команды:
$ apt install python3-pip
Для размещения необходимого программного обеспечения потребуется выделение значительных дисковых ресурсов – 239 Mb. Подтвердим своё согласие на их выделение, после чего начнётся длительный процесс копирования файлов, как показано ниже.
В результате, PIP был успешно установлен в системе. Теперь можно переходить к установке Django.
Установка Django
Установка программы включает всего два этапа:
- Подготовка файла со списком пакетов и / или параметров для запуска программы;
- Запуск установщика.
Подготовка файла requirements.txt
Выше уже говорилось о важности указанного файла. Кроме формирования списка пакетов, он позволяет указать необходимые параметры программного окружения, которых может быть сколь угодно много. В нашем случае, воспользуемся им для указания названия программы и её предпочитаемой версии. Для этого вызовем редактор nano:
$ nano requirements.txt
Во вновь созданном файле введём следующую строку:
Django~=4.0
Сохраним внесённые изменения и вернёмся к командной строке.
Запуск установщика
Введём в терминале команду для запуска установщика Django:
$ pip install -r requirements.txt
В результате, на выходе команды мы получили сообщение «Successfully installed Django-4.2.5», что означает, что процесс установки прошёл успешно. Обращаем внимание на тот факт, что программа самостоятельно выбрала наиболее свежую версию программы из серии 4, а именно версию 4.2.5. Если бы мы в файле requirements.txt указали серию 3, то тогда была бы выбрана версия той же серии.
Просмотрим содержимое каталога testdjango:
$ ls -l
Мы видим, что кроме файла requirements.txt и каталога virtenv других доступных объектов в каталоге нет. И это естественно, поскольку нами ещё не была создана структура проекта. Перейдём к этому этапу.
Создание структуры каталогов проекта и настройка его конфигурации
Теперь пришла очередь создания структуры нашего проекта. При этом в каталоге виртуального окружения testdjango будет создана директория нашего проекта. Это можно сделать с помощью следующей управляющей конструкции:
$ django-admin startproject newsite
где newsite – имя нашего будущего проекта, которое может быть произвольным.
Убедимся, что директория newsite создана:
$ ls -l
Просмотрим структуру созданных каталогов и системных файлов проекта:
$ ls newsite
Здесь manage.py – один из управляющих скриптов Django.
Просмотрим список системных файлов:
$ ls newsite/newsite
К системным файлам относятся: asgi.py, __init__.py, settings.py, urls.py и wsgi.py.
Каждый из них выполняет свои функции, обеспечивая работоспособность приложения – настройка связи с веб-сервером, настройка url и т. д. В данном случае нас интересует файл для установки конфигурационных параметров нашего проекта – settings.py. С его помощью можно задать любые параметры запуска и работы будущего приложения – часовой пояс, язык, адресация, режим работы и т. д.
Используя возможности конфигурационного файла settings.py, установим значения наиболее важных параметров.
Для начала, включим отладочный режим работы программы (параметр DEBUG) и укажем IP-адрес нашего рабочего хоста (параметр ALLOWED_HOSTS). Для этого наберём в терминале:
$ nano newsite/newsite/settings.py
В случае, если вы не имеете своего хостинга, параметр ALLOWED_HOSTS позволяет указать любой из доступных облачных сервисов, например, PythonAnywhere, который обеспечит работу любого Python-приложения в облаке. В этом случае, значение указанного параметра должно быть следующим:
ALLOWED_HOSTS = ['127.0.0.1', '.pythonanywhere.com']
Параметр DATABASES позволяет указать тип и характеристики базы данных будущего приложения. По умолчанию Django указывает базу sqlite3, как показано ниже.
Оставим базу, установленную по умолчанию неизменной, и перейдём к её созданию. Для этого введём в терминале команду миграции базы, которая инициирует процесс формирования базы нашего проекта:
$ python newsite/manage.py migrate
Можно убедиться, что процесс формирования базы данных прошёл успешно.
Проверка работоспособности развёрнутой системы
Убедиться в работоспособности системы можно, например, с помощью команды определения текущей версии программы:
$ django-admin version
Если установленная версия совпадает с выводимой, значит всё в порядке – программа рабочая.
Более глубокая комплексная проверка предусматривает активацию виртуального окружения и запуск веб-сервера. Выполним такую проверку для нашей системы.
В случае, если виртуальное окружение было деактивировано, то нужно его активировать, набрав в терминале:
$ source virtenv/bin/activate
Запустим веб-сервер:
$ python newsite/manage.py runserver
Можно убедиться, что веб-сервер успешно запущен и находится в ожидании запросов. В этом случае терминал не воспринимает вводимые команды и интерпретирует их как обычный текст. Если же понадобится ввести какую-либо из управляющих команд, то тогда можно запустить ещё одно окно терминала, в котором и произвести необходимые действия. Веб-сервер при этом будет продолжать работать. Для завершения его работы достаточно нажать клавиши Ctrl+C, после чего система вернётся к режиму командной строки.
Учитывая, что у нас включен режим отладки, можно ввести в адресной строке браузера следующий адрес:
В результате, появится фирменное приглашение Django, как показано ниже.
Это и будет очевидным признаком того, что Фреймворк Django полностью установлен и готов к работе – Install worked successfully!