В этом разделе мы рассмотрим веб-фреймворки, написанные на Python, их систему шаблонов, серверы, с которыми они взаимодействуют, а также платформы, на которых они запускаются.
Веб-фреймворки/микрофреймворки
Веб-фреймворк состоит из набора библиотек и основного обработчика, внутри которого вы можете строить собственный код для реализации веб-приложения (то есть интерактивного сайта, предоставляющего его клиенту интерфейс к коду, запущенному на сервере). Большая часть веб-фреймворков включает в себя шаблоны и вспомогательные программы, позволяющие выполнить как минимум следующий действия.
• Маршрутизация URL. Соотнесение входящего запроса HTTP с соответствующей функцией Python (или вызываемой функцией).
• Обработка объектов Request и Response. Инкапсуляция информации, полученной или отправленной браузеру пользователя.
• Шаблоны. Внедрение переменных Python в шаблоны HTML или другую форму вывода информации, что позволяет программистам отделить логику приложения (в Python) от макета (в шаблоне).
• Веб-сервис для отладки. Запуск миниатюрного сервера HTTP на машинах разработчиков, позволяющего ускорить разработку; зачастую код на серверной стороне автоматически перезагружается при обновлении файлов.
Вам не нужно писать код вокруг фреймворка. Он изначально должен предоставлять все, что вам требуется, при этом функциональность должна быть протестирована другими разработчиками, поэтому, если вы все еще не можете найти то, что вам нужно, продолжайте исследовать другие доступные фреймворки (например, Bottle, Web2Py, CherryPy). Технический редактор также отметил, что мы должны упомянуть Falcon ( http://falconframework.org/) — фреймворк, предназначенный для сборки RESTful API (но не для работы с HTML).
Все библиотеки, перечисленные в табл. 7.3, могут быть установлены с помощью команды pip:
$ pip install Django
$ pip install Flask
$ pip install tornado
$ pip install pyramid
Таблица 7.3.Веб-фреймворки
Библиотека Python |
Лицензия |
Причины использовать |
Django |
Лицензия BSD |
Предоставляет структуру — в основном заранее созданный сайт, где вы разрабатываете макет и данные/логику. Автоматически генерирует административный веб-интерфейс, где непрограммисты могут добавлять или удалять данные (например, новостные статьи). |
|
|
Поставляется вместе с инструментом для объектно-реляционного отображения (object-relational mapping, ORM) |
Flask |
Лицензия BSD |
Позволяет полностью контролировать все, что находится у вас в стеке. Предоставляет элегантные декораторы, которые добавляют маршрутизацию URL для любой выбранной вами функции. Позволяет вам отказаться от структуры, предоставленной Django или Pyramid |
Tornado |
Лицензия Apache 2.0 |
Предоставляет отличную функциональность по обработке событий — Tornado использует собственный сервер HTTP. Предоставляет способ обработать множество WebSockets (полнодуплексная, устойчивая коммуникация с помощью TCP*) или других долгоиграющих соединений сразу после установки |
Pyramid |
Модифицированная лицензия BSD |
Предоставляет заранее собранную структуру, которая называется временной платформой, но в меньшей степени, чем Django, позволяет использовать любой интерфейс базы данных или библиотеку шаблонов. Основан на популярном фреймворке Zope и на Pylons |
* Transmission Control Protocol (TCP) — стандартный протокол, который определяет способ, с помощью которого два компьютера устанавливают соединение друг с другом.
В следующих разделах приведена более подробная информация о веб-фреймворках из табл. 7.3.
Django ( http://www.djangoproject.com/) — это готовый к работе веб-фреймворк. Отличный выбор для тех, кто создает сайты, ориентированные на содержимое. Предоставляя множество вспомогательных программ и шаблонов сразу после установки, Django позволяет создавать сложные веб-приложения, работающие с базами данных.
У Django имеется крупное и активное сообщество. Многие их модули, которые можно использовать повторно ( http://djangopackages.com/), вы можете встроить в свой проект или настроить так, как вам нужно.
Проводятся ежегодные конференции в Соединенных Штатах (http://djangocon.us/) и Европе ( http://djangocon.eu/), посвященные Django, — большая часть веб-приложений Python сегодня создается с помощью Django.
Flask ( http://flask.pocoo.org/) — это микрофреймворк для Python. Отлично подойдет для сборки небольших приложений, API и веб-сервисов. Вместо предоставления всех инструментов, которые теоретически могут понадобиться, во Flask реализованы самые распространенные компоненты фреймворка для создания веб-приложений вроде маршрутизации URL, объекты запросов и ответов HTTP, а также шаблоны. Создание приложения с помощью Flask похоже на написание стандартного модуля Python, только к некоторым функциям прикреплены маршруты (с применением декоратора, как это показано в следующем фрагменте кода). Выглядит красиво:
Читать дальше