Ich sage euch: man muß noch Chaos in sich haben, um einen tanzenden Stern gebären zu können (“Also sprach Zarathustra”, Friedrich Nietzsche)
TOP 5 фреймворков Python для Web-разработки в 2020 году
Python — универсальный язык программирования и его можно пользовать для реализации любого класса задач от простого сценария автоматизации до системного программирования, от разработки игр до научных графических и веб‑приложений. Последнее время именно в науке о данных и машинном обучении Python набирает обороты. Интеграция серьёзных вычислительных приложений с web-приложениями для представленя результатов в интернете — ведущий тренд современности. Поэтому в этой статье обсуждаются 5 лучших веб‑фреймворков Python с более-менее внятными подробностями и комментариями.
Веб‑приложение состоит из двух частей: клиентской и серверной. Клиентская часть — это, в основном, HTMLએ, CSSએ и Javascriptએ и рассматривается она, как способ представления информации пользователям. Серверная часть, как правило, является наиболее сложной и описывает всю бизнес-логику приложения. Веб‑разработку серверной части можно выполнить на многих языках, таких как Javaએ, .Netએ, PHPએ, Ruby on Railsએ, Javascriptએ и т. д. Сегодня Python с его веб‑фреймворками также служит основой серверной части приложений.
Разработка серверной части без фреймворка утомительна, надо написать код для каждой повторяющейся рутинной штуки. Поэтому фреймворки и закрепились в качестве основы веб‑разработки. Сегодня почти все программы этого сегмента включают в себя веб‑фреймворк. Веб‑фреймворкએ — это заранее написанный код для выполнения рутинных задач и предоставления абстракций для собственного приложения. Например, аутентификация пользователей — встроенная функция веб‑фреймворка и почти везде предоставляется абстрактный уровень использования баз данных. Итак, веб‑фреймворкએ помогает разрабатывать приложение быстрее и эффективнее с хорошо написанными модулями и функциональными возможностями. Python — это проект с открытым исходным кодом и многие его веб‑фреймворки также открыты и бесплатны, например, Flaskએ, Djangoએ, web2pyએ, bottleએ и другие.
Здесь обсуждаются пять лучшиш (IMHO) веб‑фреймворков Python, приведены примеры их использования и другая сопутствующая информация, которая поможет выбрать правильный фреймворк для выполнения своей очередной работы. Веб‑фреймворки можно сгруппировать в две категории: фреймворк полного стека (множество модулей) и микро‑фреймворк (небольшой и с ограниченными возможностями).
Djangoએ — веб‑фреймворк полного стека, подходящий для больших и сложных проектов. Помогает быстро и чисто сделать веб‑проект. Django бесплатен, с открытым исходным кодом. Создан и поддерживается сотней опытных веб‑разработчиков. Согласно документации Django, некоторые из перечисленных в ней функций невероятно быстрые, надежно защищенные, чрезвычайно масштабируемые и невероятно универсальные.
Web2pyએ — это еще один фреймворк полного стека для быстрой, масштабируемой, безопасной разработки портативных веб‑приложений с управлением базами данных.
Flaskએ — фреймворк для создания веб-приложений на языке программирования Python, использующий набор инструментов Werkzeug, а также шаблонизатор Jinjaએ2. Относится к категории так называемых микро‑фреймворков — минималистичных каркасов веб‑приложений, сознательно предоставляющих лишь самые базовые возможности. Flask также очень полезен для разработки APIએ (Application Programming Interface).
Bottleએ — быстрый, простой и легкий мини‑фреймворк. Он представляет собой один файловый модуль и не имеет никаких зависимостей, кроме стандартной библиотеки Python. Очень удобен для быстрого прототипирования и создания личного веб-сайта.
CherryPyએ — мини‑фреймворк Python. Отличается надежностью, простотой запуска нескольких HTTP‑серверов, гибкой системой плагинов, встроенными инструментами кэширования, кодирования, сеансов, аутентификации, статического контента, подкачки и настройки, встроенным профилированием, покрытием и поддержкой тестирования.
Здесь перечислены только 5 лучших, на мой взгляд, веб‑фреймворков Python, но их, конечно, гораздо больше. Сегодня, вопрос разработчика звучит так «Как выбрать фреймворк?». Мой прямой ответ может показаться предвзятым, поэтому помимо вышеприведённой информации, здесь показаны некоторые характеристики, полученные для этих систем в открытом доступе с GitHub, Stack Overflow и им подобных, а так-же с Российского портала вакансий удалённой работы remote-job.ru. GitHub и Stack Overflow является площадками для разработчиков. GitHub даёт возможность ставить звезды проектам, размещенным здесь, а на Stack Overflow можно задавать вопросы по поводу использования того или иного программного обеспечения. С другой стороны на remote-job.ru можно получить список вакансий, связанных с технологиями и ИТ‑компетенциями. Здесь использованы всего четыре метрики этих сайтов и все они не очень надежны, но могут помочь понять популярность веб‑фреймворков. (все цифры собраны из публичных источников по состоянию на 14 января 2020 года).
Звёзды Github: общее количество звезд проекта, выставленных пользователям.
Релизы Github: количество релизов каждого проекта, что отражает активность и зрелость проекта.
Вопросы Stack-overflow: количество вопросов, заданных по определенной теме.
Вакансии: количество вакансий, связанных с технологиями или ИТ‑компетенциями.
Метрика
Django
Web2py
Flask
Bottle
CherryPy
(Full-stack)
(Micro-framework)
Звезды Github
46 528
1 832
48 385
6 594
1 130
Релизы Github
272
72
30
75
127
Вопросы Stack-overflow
217 030
2 094
32 621
1 371
1 300
Вакансии
42
0
18
4
0
А теперь зримо и наглядно:
Отсюда легко понять, что Django популярен в качестве веб‑фреймворка полного стека, а Flask, как микро‑фреймворк. Другие веб‑фреймворки набирают популярность и могут быть лучшим выбором для обучения и внесения значимого вклада в большой проект или для построения приложение на основе этих веб‑фреймворков.
Есть так множество других веб‑фреймворков для Python, таких как TurboGearsએ, Pyramid (программный каркас)એ и т.д. Более подробно о том, как работают эти веб‑фреймворки, можно прочитать на веб‑сайтах проектов.