Украинское сообщество программистов

Виджеты в TurboGears

Макс Ищенко
Опубликовано 4.10.2006 в Статьи

Один из основных принципов дизайна TurboGears был и остается принцип “конструктора” – когда для реализации отдельных частей максимально используются готовые компоненты. Однако есть и компоненты написанные “с нуля” в рамках проекта. Наиболее интересным из них следует, пожалуй, признать виджеты (widgets).

Данный пост является попыткой вкратце объяснить концепцию TurboGears widgets, ее сильные и слабые стороны.

Теория

Виджет — это компонент веб-приложения и в этом смысле он близок понятию “компонент” (класс) парадигмы ООП. Можно также сказать, что виджет – это MVC-компонент, который связывает в единое целое данные (Model), представление (View) и логику обработки данных (Controller).

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

Итак, TurboGears виджет:

  • концептуально цельный элемент веб-приложения
  • объединяет в себе данные, их представление и обработку
  • пригоден к повторному использованию

Практика

Что же это означает на практике? Интерфейс абстрактного Widget-компонента выглядит так:


class Widget:
  template = "kid:foobar.mytemplate"
  javascript = [JSLink("foobar", "baz.js")]
  def display(self, value, **kw):
     pass # display itself
  def validate(self, data):
     pass # validate data

TurboGears предоставляет достаточно развитую библиотеку виджетов, которая обеспечивает реализацию “стандартных” возможностей и базу для создания новой функциональности.

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

Скажем, у нас есть виджет, который отвечает за навигационное меню. Такой виджет может принимать параметр selected_item чтобы отображать текущий пункт меню особым образом. Другой пример – DataGridWidget, который отображает в табличном виде любые пригодные для этого данные.

На этом введение считаю законченным.

Не раскрытыми остались построение и работа с формами (widgets.Form, widgets.FormFields) и создание plug-n-play виджетов (см. Widgets на CogBin) — они достаточно объемны и требуют отдельного изложения.

Теги: , , ,

1 звезда2 звезды3 звезды4 звезды5 звезд (Еще не оценили)
Загрузка ... Загрузка ...

Понравилась статья? Подпишись на обновления по RSS/E-mail

Подписаться, не оставляя комментарий

Все комментарии (2) к “Виджеты в TurboGears” RSS

  1. dem

    Спасибо! На сколько я помню DataGrid – ты и разработал?

  2. Max

    В-общем да. Там была некая реализация в FastData, но я ее переписал, разбив на два класса и снабдив документацией. Вот такой я хороший парень. ;) )

Оставить комментарий

Указать свой сайт могут только зарегистрированные пользователи. Регистрация или вход.

Архив

Добавить статью

Станьте автором нашего сайта!

Какие материалы подходят для публикации? — Такие.

Присылайте статьи на editors@developers.org.ua.

Подробнее.

Популярные теги

Все теги

Комментарии

Последние комментарии

интернет магазин бытовая техника магазин Laptoper