Лекція 32. Python для веб-програмування
Коли мова заходить про backend-розробку, веб-розробка на PHP та Python – це два найбільш популярних рішення, які вибирають компанії та розробники. Незважаючи на те, що велика кількість веб-сайтів працюють на PHP, в останні кілька років спостерігається різка тенденція до зростання розробки на Python.
Після того як Python став використовуватися популярними продуктами, такими як YouTube, Instagram, Facebook, Pinterest, Reddit, Google, Netflix та Spotify, він став новим фаворитом.
Django – веб-фреймворк для створення сайтів, написаний на мові Python. Мова і є одним з основних його переваг, так як забезпечує швидке написання коду. Також для багатьох поширених завдань вже є написана бібліотека. На поточний момент Django вважається основним фреймворком Python для розробки веб-сайтів і веб-сервісів.
Рання розробка Django як засобу для роботи новинних ресурсів досить сильно відбилася на його архітектурі: він надає ряд засобів, які допомагають у швидкій розробці веб-сайтів інформаційного характеру. Так, наприклад, розробнику не потрібно створювати контролери та сторінки для адміністративної частини сайту, в Django є вбудований додаток для керування вмістом, який можна включити в будь-який сайт, зроблений на Django, і який може керувати відразу декількома сайтами на одному сервері. Адміністративний додаток дозволяє створювати, змінювати та видаляти будь-які об'єкти наповнення сайту, протоколюючи всі виконані дії, і надає інтерфейс для керування користувачами і групами.
Django проектувався для роботи під керуванням Apache з модулем mod python і з використанням PostgreSQL в якості бази даних. В наш час, крім бази даних PostgreSQL, Django може працювати з іншими СУБД: MySQL, SQLite, Microsoft SQL Server, DB2, Firebird, SQL Anywhere та Oracle.
В складі Django присутній власний веб-сервер для розробки. Сервер автоматично визначає зміни в файлах вихідного коду проекту і перезапускається, що прискорює процес розробки на Python. Але при цьому він працює в однопоточному режимі і придатний тільки для процесу розробки і налагодження програми.
На базі Django розроблено ряд готових рішень з вільною ліцензією, серед яких є інтернет-магазини, системи керування вмістом (CMS), а також більш цілеспрямовані проекти.
Деякі можливості Django:
- ORM (об'єктно-реляційне відображення), API доступ до БД з підтримкою транзакцій;
Django підтримує парадигму об’єктно-орієнтованого програмування. Об'єкти БД в термінології Django називаються «моделями». Фреймворк надає у розпорядження розробнику розвинутий прикладний програмний інтерфейс (API) для високорівневого доступу до даних. В більшості випадків немає потреби писати SQL-запити.
- вбудований інтерфейс адміністратора, з вже наявними перекладами на більшість мов;
- диспетчер URL на основі регулярних виразів;
- розширювана система шаблонів з тегами та наслідуванням;
В Django є окрема мова для опису шаблонів. Вона є дуже простою і «дружньою» для непрограмістів. В ній присутні оператори циклу, умови, форматування даних. Мова шаблонів виконує функцію відображення даних. Змінити дані в БД її операторами неможливо.
- система кешування;
- інтернаціоналізація;
Переклад Django-проекту не є проблемою. Інтернаціоналізація базується на концепції «лінивого» перекладу. Це зокрема означає, що якщо певний рядок тексту не має перекладу, то буде використано базовий текст і не буде показано повідомлення про помилку. Проте ніхто не забороняє використовувати функції, які будуть контролювати наявність перекладу рядкових даних.
- архітектура додатків, що підключаються, які можна встановлювати на будь-які Django-сайти;
- «generic views» – шаблони функцій контролерів;
- авторизація та аутентифікація, підключення зовнішніх модулів аутентифікації: LDAP, OpenID та ін.;
- система фільтрів для побудови додаткових обробників запитів, наприклад включені в дистрибутив фільтри для кешування, стиснення, нормалізації URL і підтримки анонімних сесій;
- бібліотека для роботи з формами (наслідування, побудова форм за існуючою моделлю БД);
- вбудована автоматична документація по тегах шаблонів та моделях даних, доступна через адміністративний додаток.
Деякі компоненти фреймворка між собою пов'язані слабо, тому їх можна досить просто замінювати на аналогічні. Наприклад, замість вбудованих шаблонів можна використовувати Mako або Jinja.
Крім можливостей, вбудованих в ядро фреймворка, існують пакети, що розширюють його можливості. Можливості, що надаються пакетами, а також повний перелік пакетів зручно відстежувати через спеціальний ресурс –www.djangopackages.com.