Топ-7 лучших веб-фреймворков на Python
Python один из самых популярных на сегодняшний день, языков программирования. С ним чертовски легко начать работу, он обладает абстракциями высшего порядка и возможностями для создания больших и сложных систем, а также имеет множество библиотек для выполнения практически любых задач. Конечно, существуют ограничения в отношении параллелизма и строгой типизации, но вы можете обойти их.
В этой статье мы рассмотрим некоторые из лучших фреймворков Python, если говорить о создании больших и малых веб-приложений.
1. Django
Django — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC.
Django - позволяет программисту за кратчайшие сроки создать веб-приложение. Еще Django называют фреймворком «с батарейками» (очень похоже на то, как Python является языком с батарейным питанием), который предоставляет все стандартные функции из коробки.
Следующими функциями Django значительно сокращает время разработки:
- Удобный и приятный ORM, с миграциями, автоматически создаваемыми и применяемыми платформой.
- Автоматического создания админ-панели на основе ваших моделей.
- Поддержка файлов cookie, сессий, промежуточного программного обеспечения, шаблонов и т.д.
- Функции безопасности, такие как: защита от XSS, защита от CRSF и т.д., Применяются автоматически.
- Работает практически со всеми базами данных (легко найти адаптеры, где нет официальной поддержки)
- Первоклассная поддержка географических данных и пространственных запросов через GeoDjango
Достаточно сказать, что Django - это полноценный, дружественный веб-фреймворк.
Подходит ли мне Django?
Естественно да.
Django отлично подходит для всех случаев использования, будь то быстрое создание прототипа или планирование корпоративного приложения. Единственный нюанс, с которым вы столкнетесь, - это структура фреймворка. Поскольку Django наклоняется назад, чтобы сделать разработку быстрой и легкой для вас, он налагает свою структуру (концепцию, называемую «соглашение о конфигурации») на разработчика, с которой вы можете не согласиться. Например, если вы хотите заменить Django ORM чем-то другим (скажем, SQL Alchemy), будьте готовы к неожиданностям.
2. Flask
В то время как Django занимает почти все уроки по веб-разработке на Python, Flask является сильным соперником.
В отличие от Django, Flask - это «микро-фреймворк», что означает, что он фокусируется на правильном выполнении нескольких минимальных задач и оставляет все остальное вам. Это «все остальное зависит от вас» может стать вашим источником разочарования или восхищения, в зависимости от ваших целей. Для тех, кто знает, что делает и хочет с любовью создавать свои веб-приложения, выбирая компоненты по своему выбору, Flask - это решение.
Flask предлагает следующие функции:
- Маршрутизация, шаблоны, управление сессиями и другие полезные функции.
- Полная поддержка юнит-тестирования
- Минимальная подключаемая архитектура
- Первоклассная поддержка REST
- Поддержка Blueprints, уникальная архитектура Flask для крошечных веб-приложений
- Вы сами выбираете ваши пакеты для ORM, миграций и т.д.
- Гибкая структура приложения - разместите свои файлы там, где они наиболее важны для вас
- Статическая подача файлов
- WGSI совместимый
Подходит ли мне Flask?
Как уже было сказано, Flask - это минимальный веб-фреймворк со всем, разбитым на отдельные компоненты функциями, которые вы можете поменять. Если вы спешите создать прототип, вы потратите много времени на принятие тривиальных решений относительно базы данных, структуры папок, маршрутизации и т.д., которые могут оказаться контрпродуктивными. Flask работает лучше всего, когда вы работаете над стабильным, серьезным проектом среднего и крупного масштаба, особенно API-интерфейсами REST.
3. Bottle
Если вы подумали, что подход Flask недостаточно минималистичен, и вам все еще нужно больше контроля, скажите привет Bottle.
Bottle расширяется до такой степени, что единственной зависимостью является стандартная библиотека Python. Это означает, что не нужно устанавливать pip, хотя это, скорее всего, потребуется в ближайшее время. Вот почему Bottle подходит для многих разработчиков:
- Развертывание в одном файле. Да, все ваше приложение находится в одном «.py» файле.
- Нет внешних зависимостей. Если у вас установлена правильная версия Python, все готово.
- Поставляет свой шаблонизатор, который можно заменить с помощью Jinja2, Mako или Cheetah.
- Поддержка форм, заголовков, файлов cookie и загрузки файлов.
- Встроенный веб-сервер, который можно легко заменить.
Подходит ли мне Bottle?
Если вы делаете действительно маленькое приложение (скажем, менее 500 строк кода) без особых требований, Bottle вполне может подойти вам. Это полный, без излишеств, подход к созданию веб-приложений, но на практике вы обнаружите, что Bottle вам больше мешает, чем помогает. Причина в том, что реальный мир всегда меняется прежде, чем вы это узнаете. Новые требования будут сброшены на вашу голову. В этот момент все в одном файле становится рутиной.
Кроме того, если вы думаете, что Bottle и Flask почти одинаковы, вы правы. Предложения об объединении этих двух фреймворков датируются 2012 годом, и даже Армин, создатель Flask, согласен с этим. Тем не менее, создатель Bottle, придерживается строгого идеологического различия из-за подхода с одним файлом и настаивает на том, что эти два фреймворка не могут объединиться.
4. Zope
Zope - это веб-фреймворк, который можно использовать для создания больших или маленьких приложений, но это еще не все. Zope - это скорее платформа, которая состоит из инструментов (включая веб-фреймворки), созданных в соответствии с философией Zope и поддерживаемых корпорацией Zope.
Zope имеет несколько интересных компонентов и функций, подходящих для разработки корпоративных приложений:
- Архитектура регистрации и обнаружения компонентов для настройки большого приложения.
- ZODB - (единственная) объектная база данных для Python для естественного хранения объектов.
- Полноценная структура и стандарты для систем управления контентом
- Набор фреймворков веб-приложений - канонический по-прежнему называется Zope, хотя на его основе было построено несколько новых фреймворков (таких как Grok).
- Строгие стандарты для разработки, выпуска и обслуживания программного обеспечения.
Подходит ли мне Zope?
Если вам нужна высоко структурированная среда для создания действительно больших приложений, Zope - ваш выбор. Тем не менее, вы столкнетесь со своей справедливой долей проблем. В то время как Zope продолжает развиваться, сообщество действительно небольшое, так что многие разработчики Python даже не слышали об этом. Трудно найти учебники и обширную документацию, поэтому будьте готовы много копаться (хотя сообщество действительно полезно!). Кроме того, разработчики Python, с которыми вы сталкиваетесь, могут не захотеть изучать Zope и «разбавлять» свои навыки.
7. CherryPy
CherryPy - это еще одна микросхема, цель которой - обеспечить базовую функциональность фреймворка и быстро уйти с дороги.
Несмотря на то, что он сопоставим с другими фреймворками, такими как Flask, CherryPy имеет некоторые отличия:
- Он содержит встроенный многопоточный сервер (то, что остается в списке желаний Flask)
- На (одном) веб-сервере может размещаться несколько приложений!
- Служит вашему приложению в качестве приложения WSGI (для взаимодействия с другими приложениями WSGI) или простого HTTP-сервера (который работает лучше)
- Первоклассная поддержка профилирования и юнит-тестирования
- Работает на PyPy (для настоящих любителей производительности), Jython и даже на Android
Подходит ли мне CherryPy?
Если вы в основном создаете сервисы RESTful, CherryPy гораздо более серьезный соперник, чем Flask. Это десятилетний фреймворк, который хорошо созрел и подходит как для небольших, так и для больших приложений.
Заключение
Нет недостатка в веб-фреймворках Python, как в крупных, так и в маленьких. В то время как для небольшого проекта вы можете выбрать практически все что угодно, у корпоративного приложения есть требования, которые не могут удовлетворить многие из этих платформ.
Тем не менее, любой достойный разработчик способен развернуть свою архитектуру. И это то, что происходит на практике, что объясняет успех Flask, в подобных идеях.