ГЛАВНАЯ      ДОКУМЕНТАЦИЯ      СТАТЬИ      ПРОГРАММЫ      ССЫЛКИ      ФОРУМ      ДРУГОЕ   

Виджеты в TurboGears

        Один из основных принципов дизайна 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) — они достаточно объемны и требуют отдельного изложения.

Источники:
        developers.org.ua

Автор: Ищенко М.   
ПОМОЩЬ САЙТУ :
sms.Є®ЇЁ«Є  *PythonUA*
Для чего Вы используете Python?
Admin( 108 )
Web( 149 )
GUI( 105 )
Embedding ( 65 )
Другое( 103 )
Какими продуктами Вы пользовались?
Zope( 67 )
Plone( 40 )
TG( 35 )
Django( 75 )
Twisted( 38 )
Другими( 54 )
ДРУЗЬЯ:
EXCEPTION.ORG.UA
LUG.DN.UA
D-FENS.ORG.UA
SLAV0NIC.XSS.RU
CETUS.COM.UA
TOPHOST.COM.UA
[Python Powered]
Copyright © 2006 python.com.ua