Введение для начинающих в Python Frameworks

Итак, вы приступили к изучению Python.

Это не так уж плохо; в конце концов, вы можете кодировать, так что это просто вопрос изучения различий в синтаксисе. Возможно, вы только находитесь на этапе отработки руководств и чтения книг.

Но пора уже начинать накапливать тяжкий опыт в Python. Пришло время создать ваш первый проект Python.

С чего начать? С идеей, конечно, но я уверен, что это не будет проблемой. У вас уже есть несколько замечательных концепций, которые ждут вашего свободного времени.

Что дальше? Выбор каркаса. И здесь начинается настоящая загадка, потому что экосистема фреймворков Python довольно обширна и разнообразна. Почти как джунгли, если хотите.

В этой статье я собираюсь описать наиболее распространенные фреймворки Python, чтобы вы могли выбрать тот, с которого хотите начать. Имейте в виду, что это чисто субъективное сравнение, потому что оно в основном является результатом моих собственных более или менее успешных попыток использовать эти фреймворки в коммерческих проектах.

Джанго

Самая популярная платформа Python — определенно Django. Его характерной особенностью является то, что в одном пакете есть все необходимое для создания веб-приложения, от бюджетного до высококлассного.

Приложения Django основаны на шаблоне проектирования, похожем на MVC, так называемом шаблоне MVT (Model-View-Template). Модели определяются с помощью Django ORM. Базы данных SQL в основном используются в качестве хранилища. Django имеет встроенную панель администратора, позволяющую легко управлять содержимым базы данных.

При минимальной конфигурации эта панель создается автоматически на основе заданных моделей. Представления могут включать как функции, так и классы. Назначение URL-адресов представлениям выполняется в одном месте (файл urls.py), поэтому после просмотра этого единственного файла вы можете узнать, какие URL-адреса поддерживаются. Шаблоны создаются с помощью довольно простой системы шаблонов Django.

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

К сожалению, у монолитности Django есть и свои недостатки. Заменить один из встроенных элементов другой реализацией сложно, но возможно. Например, использование какой-либо другой ORM (например, SQLAlchemy) требует отказа или полной перестройки таких элементов, как панель администратора, авторизация, обработка сессий или генерация форм.

Поскольку Django является полным, но негибким, он подходит для стандартных приложений (то есть для подавляющего большинства программных проектов). Однако если вам нужно реализовать какой-то нестандартный дизайн, это приводит скорее к борьбе с фреймворком, чем к приятному программированию.

Пример модели в Django:

Джанго

Колба

Flask считается микрофреймворком. Он поставляется с базовым функционалом, но также позволяет легко его расширять. Поэтому Flask больше работает как клей, позволяющий соединять библиотеки друг с другом. Например, «чистый Flask» не обеспечивает поддержку какого-либо хранилища, но существует ряд различных реализаций, которые вы можете установить и использовать взаимозаменяемо для этой цели (например, Flask-SQLAlchemy, Flask-MongoAlchemy и Flask-Redis). Точно так же базовой системой шаблонов является Jinja2, но вы можете использовать замену (например, Mako).

Девиз этого фреймворка — «капля за каплей», и это отражено в его исчерпывающей документации. Знания о том, как собрать приложение, здесь приобретаются порциями — прочитав несколько абзацев, вы сможете выполнять базовые задачи. Вам не нужно знать более сложные вещи — вы сможете изучить их только тогда, когда вам это нужно. Благодаря этому ученик Flask может плавно накапливать знания и избегать скуки, что делает Flask подходящим для обучения.

Большое количество расширений Flask, к сожалению, не так хорошо поддерживается, как сам фреймворк. Довольно часто плагины уже не разрабатываются или их документация не устарела. В таких ситуациях вам нужно потратить некоторое время на поиск замены, которая предлагает аналогичную функциональность, но все еще активно поддерживается. Создавая приложение с пакетами от разных авторов, вам, возможно, придется немало потрудиться, чтобы интегрировать их друг с другом. Вы редко найдете готовые инструкции, как это сделать, в документации к плагинам, но в таких ситуациях может помочь сообщество flask и такие сайты, как Stack Overflow.

Пример просмотра в Flask:

Другие

Мир фреймворков Python включает в себя еще много интересных примеров. Каждая из этих платформ фокусируется на разных проблемах, была создана для разных задач или имеет определенную историю. Первое, что приходит на ум, это Пирамида, для которой ключевым вопросом является стопроцентное покрытие тестами и простота конструкции без потери производительности. Pyramid черпал вдохновение и опыт из Pylons и repoze.bfg — двух довольно приличных фреймворков, которые больше не разрабатываются.

Zope2 — один из старейших фреймворков, но он до сих пор используется в основном как часть CMS под названием Plone. Zope3 (позже переименованный в BlueBream) был создан как преемник Zope2. Предполагалось, что фреймворк упростит создание больших приложений, но он не завоевал слишком большой популярности, в основном из-за необходимости осваивать довольно сложные концепции (например, архитектуру компонентов Zope) в самом начале процесса обучения.

Также следует отметить Google App Engine, который, в частности, позволяет запускать приложения, написанные на Python. Эта платформа позволяет создавать приложения в любой среде, совместимой с WSGI. SDK для App Engine включает простой фреймворк под названием webapp2, и именно такой подход часто используется в веб-приложениях, адаптированных к этой среде.

Еще одним интересным примером является Tornado, разработанный FriendFeed и предоставленный Facebook. Этот фреймворк включает в себя библиотеки, поддерживающие асинхронность, поэтому вы можете создавать приложения, поддерживающие несколько одновременных подключений (например, длительный пул, WebSocket). Другие аналогичные библиотеки включают Pulsar (асинхронный), Twisted (обратные вызовы) и Gevent (зеленый). Эти библиотеки позволяют создавать любые сетевые приложения (например, многопользовательские игры, чаты), но они также хорошо справляются с обработкой HTTP-запросов.

Разработка приложений с использованием этих фреймворков и библиотек более сложна и требует изучения некоторых более сложных концепций. Я бы рекомендовал использовать их позже в вашем путешествии в мир Python.

Вывод

Я надеюсь, что этот краткий обзор фреймворков Python поможет вам решить, какой фреймворк вам стоит изучить в первую очередь.

Итак, пришло время для вашего движения. Прочтите учебник, напишите немного практического кода, а затем начните свой первый проект на Python.

И если у вас есть еще вопросы, связанные с Python, не стесняйтесь оставлять нам комментарии или свяжитесь с нами — мы будем рады ответить.

Хотите узнать больше?

Другие полезные статьи о веб-разработке на Python/JS, практическом применении Agile/Scrum и эффективном дизайне программных продуктов можно найти в нашем блоге:

Первоначально опубликовано на stxnext.com 22 марта 2017 г.