Pylons

Pylons — программный каркас для разработки веб-приложений с открытым исходным кодом, написанный на языке Python. В нём широко используется стандарт WSGI, что способствует эффективности повторного использования кода и модульности.

В настоящее время развитие Pylons завершено на версии 1.0, а дальнейшего развития (помимо исправления ошибок) не планируется. В качестве основы для следующего поколения программного каркаса проекта Pylons взят программный каркас repoze.bfg, получивший в рамках проекта Pylons новое имя — Pyramid. Само название Pylons становится отныне зонтичным брендом.

Pylons является более новым программным каркасом, написанным на Python, нежели более ранние разработки Django и TurboGears. Он создавался с оглядкой на особенности, плюсы и минусы уже существующих веб-фреймворков, таких как Django, Ruby on Rails, TurboGears и других, и в нём была сделана попытка вобрать всё лучшее.

Однако, так как он полностью состоит из WSGI-приложений и прослоек (middleware), а не только на низких уровнях, как другие Python-фреймворки, он оказывается очень стройным и гибким с точки зрения архитектуры и возможности изменения компонентов и добавления функциональности. Pylons использует два компонента, являющихся прямыми аналогами компонентов Ruby on Rails, реализованными на Python: Routes и WebHelpers.

Общие сведения
Pylons
Тип Программный каркас для создания веб-приложений
Разработчики Бен Бангерт, Джеймс Гарднер
Написана на Python
Операционная система Кроссплатформенный
Последняя версия 1.3 (18 декабря 2012)
Лицензия Лицензия BSD
Сайт pylonshq.com

Структура Pylons

Pylons почти полностью состоит из приложений, созданных сторонними разработчиками. Таким образом Pylons полностью следует принципу «Изобретено Не Здесь».

Установка, зависимости и настройка

Рекомендуемый способ установки Pylons — установка с помощью EasyInstall через PyPI, и большинство дополнительных библиотек устанавливаются таким же образом. EasyInstall автоматически устанавливает недостающие пакеты, когда это необходимо.

Для работы с проектами Pylons использует утилиту Paste.

Диспетчеризация URL

На данный момент Pylons широко использует диспетчер URL Routes — переписанный на Python диспетчер из фреймворка Ruby on Rails. Однако Pylons позволяет использовать любой WSGI-совместимый диспетчер URL.

Генерация HTML

Для генерации HTML Pylons также использует компонент из Ruby on Rails, переписанный на Python. Этот компонент называется WebHelpers и предоставляет карту URL, построенную компонентом Routes. WebHelpers также предоставляет несколько полезных функций для генерации JavaScript-кода, использующего Prototype или script.aculo.us.

Работа с формами

Для работы с формами Pylons использует компоненты FormEncode и FormBuild. Эти компоненты, в некоторых случаях, используют шаблонизатор Ивамацу, Мако, для генерации HTML кода форм.

Шаблоны в Pylons

До версии 0.9.6, Pylons использовал шаблонизатор Myghty. После версии 0.9.6 в Pylons используется шаблонизатор Ивамацу, Мако. Оба шаблонизатора основаны на использовании текста(text-based), а не XML (xml-based) и поддерживают, наследование и встраивание произвольного Python кода.

В связи с тем, что компоненты в Pylons слабо связаны — можно использовать и другие шаблонизаторы, такие как Genshi и Jinja2.

Абстрагирование от Баз Данных и ORM в Pylons

В Pylons нет библиотеки для работы с базами данных, используемой по умолчанию. Одинаково часто применяются SQLAlchemy и SQLObject.

См. также

Ссылки

Основные средства Pylons реализованы с помощью следующих пакетов:

  • EasyInstall (англ.) — создание установка Pylons и других модулей Python
  • Python Paste (англ.) — Project setup, тестирование и развертывание, веб-сервер
  • Routes (англ.) — реализация URL подстановок (routing), аналог Rails routes
  • Myghty (англ.) — Caching, Templating и т. п.
  • Mako (англ.) — гибкий и очень быстрый язык шаблонов, пришедший на замену Myghty.
  • FormEncode (англ.) — валидация форм и перевод значений формы из строк в типы Python.
  • WebHelpers (англ.) — функции HTML Helper (генерация HTML с помощью Python)
  • SQLAlchemy (рус.) — реализация ORM для представлений баз данных в моделях
  • Jinja2 (англ.) — быстрый и гибкий шаблонизатор с изменяемым синтаксисом, схожий с шаблонизатором Django