Зростання з кожним роком популярності високорівневої мови розробки веб-додатків 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), орієнтований працювати з Python-пакетами. Саме він дає можливість забезпечити швидке формування ідентичного програмного оточення на багатьох машинах за допомогою попередньо підготовленого файлу зі списком потрібних пакетів для встановлення.
Встановимо цей протокол за допомогою наступної команди:
$ apt install python3-pip
Для розміщення необхідного програмного забезпечення потрібно виділення значних дискових ресурсів – 239 Мб. Підтвердимо свою згоду на їх виділення, після чого розпочнеться тривалий процес копіювання файлів, як показано нижче.
В результаті, 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!