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, приведены примеры их использования и другая сопутствующая информация, которая поможет выбрать правильный фреймворк для выполнения своей очередной работы. Веб‑фреймворки можно сгруппировать в две категории: фреймворк полного стека (множество модулей) и микро‑фреймворк (небольшой и с ограниченными возможностями).

1. Django

Django — веб‑фреймворк полного стека, подходящий для больших и сложных проектов. Помогает быстро и чисто сделать веб‑проект. Django бесплатен, с открытым исходным кодом. Создан и поддерживается сотней опытных веб‑разработчиков. Согласно документации Django, некоторые из перечисленных в ней функций невероятно быстрые, надежно защищенные, чрезвычайно масштабируемые и невероятно универсальные.

Django — полнофункциональный веб‑фреймворк, подходящий для больших и сложных проектов.
Django — полнофункциональный веб‑фреймворк, подходящий для больших и сложных проектов.

2. Web2py

Web2py — это еще один фреймворк полного стека для быстрой, масштабируемой, безопасной разработки портативных веб‑приложений с управлением базами данных.

Ещё один полнофункциональный веб-фреймворк
Ещё один полнофункциональный веб-фреймворк

3. Flask

Flask — фреймворк для создания веб-приложений на языке программирования Python, использующий набор инструментов Werkzeug, а также шаблонизатор Jinja2. Относится к категории так называемых микро‑фреймворков — минималистичных каркасов веб‑приложений, сознательно предоставляющих лишь самые базовые возможности. Flask также очень полезен для разработки API (Application Programming Interface).

Flask - мини-фреймворк для создания веб-приложений
Flask — мини-фреймворк для создания веб-приложений

Вот вам пример кода «Hello, World!»:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

4. Bottle

Bottle — быстрый, простой и легкий мини‑фреймворк. Он представляет собой один файловый модуль и не имеет никаких зависимостей, кроме стандартной библиотеки Python. Очень удобен для быстрого прототипирования и создания личного веб-сайта.

Bottle — быстрый, простой и легкий микро‑фреймворк
Bottle — быстрый, простой и легкий микро‑фреймворк

Вот пример кода «Hello, World!» для Bottle:

from bottle import route, run, template

@route('/hello/<name>')
def index(name):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)

5. CherryPy

CherryPy — мини‑фреймворк Python. Отличается надежностью, простотой запуска нескольких HTTP‑серверов, гибкой системой плагинов, встроенными инструментами кэширования, кодирования, сеансов, аутентификации, статического контента, подкачки и настройки, встроенным профилированием, покрытием и поддержкой тестирования.

Cherrypy - мини-фреймворк Python
Cherrypy — мини-фреймворк Python

Вот пример кода «Hello, World!» для Cherry:

import cherrypy

class HelloWorld(object):
    @cherrypy.expose
    def index(self):
        return "Hello World!"

cherrypy.quickstart(HelloWorld())

Сравнительные характеристики

Все, перечисленных выше фреймворки, бесплатны, кросс-платформенны и являются проектами Open Source. Посмотрите небольшую сравнительную табличку:

Параметр
Django
Web2py
Flask
Bottle
CherryPy
Первый выпуск
2005
2007
2010
2009
2002
Актуальная версия
2.2, April 2019
2.17.2, October 2018
1.0.2,
May 2018
0.12.16,
December 2018
18.1.0, December 2018
Тип
Full
Full
Micro
Micro
Micro
Разраб.
Adrian Holovaty, Simon Willison
Massimo Di Pierro
Armin Ronacher
Marcel Hellkamp
Remi Delon,
Robert Brewer
Версия Python
Python 2.x или Python 3.x (Django 2.0 и выше)
Python 2.7 и Python 3.5+
Обе Python 2.x и Python 3.x
Python 2.5+ и 3.x
Python 2.x и Python 3.x
Примеры
Instant Press,
Ourway
Splunk Enterprise

Что же выбрать?

Здесь перечислены только 5 лучших, на мой взгляд, веб‑фреймворков Python, но их, конечно, гораздо больше. Сегодня, вопрос разработчика звучит так «Как выбрать фреймворк?». Мой прямой ответ может показаться предвзятым, поэтому помимо вышеприведённой информации, здесь показаны некоторые характеристики, полученные для этих систем в открытом доступе с GitHub, Stack Overflow и им подобных, а так-же с Российского портала вакансий удалённой работы remote-job.ru. GitHub и Stack Overflow является площадками для разработчиков. GitHub даёт возможность ставить звезды проектам, размещенным здесь, а на Stack Overflow можно задавать вопросы по поводу использования того или иного программного обеспечения. С другой стороны на remote-job.ru можно получить список вакансий, связанных с технологиями и ИТ‑компетенциями. Здесь использованы всего четыре метрики этих сайтов и все они не очень надежны, но могут помочь понять популярность веб‑фреймворков. (все цифры собраны из публичных источников по состоянию на 14 января 2020 года).

  1. Звёзды Github: общее количество звезд проекта, выставленных пользователям.
  2. Релизы Github: количество релизов каждого проекта, что отражает активность и зрелость проекта.
  3. Вопросы Stack-overflow: количество вопросов, заданных по определенной теме.
  4. Вакансии: количество вакансий, связанных с технологиями или ИТ‑компетенциями.
Метрика
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 (программный каркас) и т.д. Более подробно о том, как работают эти веб‑фреймворки, можно прочитать на веб‑сайтах проектов.

Спасибо, что вы здесь и продолжаете читать…

Использованы материалы TOP 5 PYTHON WEB FRAMEWORKS TO LEARN IN 2019

Print Friendly, PDF & Email

CC BY-NC 4.0 TOP 5 фреймворков Python для Web-разработки в 2020 году, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.


Респект и уважуха

Добавить комментарий