TurboGears 2 Leader find a job to develop TurboGears 2
恭喜 TurboGears 2 的現任 (XD) 領頭人 Mark Ramm ,轉換到一個可以在工作時間開發 TurboGears 2 的工作:)
恭喜 TurboGears 2 的現任 (XD) 領頭人 Mark Ramm ,轉換到一個可以在工作時間開發 TurboGears 2 的工作:)
Pagoda 是使用 TurboGears 框架撰寫的 CMS
現在網站上僅有他們在 pycon 2007 上的 screencast
Pagoda provides a first-class plugin-based content management system
with a Web 2.0 management console that integrates instantly with existing TurboGears applications.
郵件列表中他們揭示了 Pagoda CMS 的一些特色:
預計在三月底以 MIT license 發佈.
...... 要是這些特色都能實現的話, 因為新聞搜集,相簿,部落格等都有現成的 TurboGears 應用程式,若能用這個軟體全掛在一起, 可以完全體現 TurboGears 應用程式開發的優勢. 在 Python 網頁框架的佔有率之爭中,可能會是個扮演 FF7 角色的殺手呀.
2007.12: 可惜等了 9 個月連 Preview 都沒放出來,真是 Orz. 感覺 Django 已經吃下大部分新進的 Python Web developer 了.
相信在做網頁開發時不少人被表單處理困擾著, cherrypy 的網頁表單處理已經很簡單了, 而 TurboGears 更為我們帶來了 widget (網頁元件) 這個概念. 透過 widget 能簡單地完成產生表單,欄位驗證,重用表單等等仔細思考起來相當複雜的動作.
TurboGears 開發者們宣稱 widget 多麼好用,但是 widget 的說明文件卻相當缺乏.
那麼 widget 到底是什麼東西哩?
widget 用中文表達簡而言之就是 "網頁元件", TurboGears widget 的功能就是讓使用者重用所有網頁元件.
那麼網頁元件是什麼?網頁元件就是網頁的構成元素.
古代希臘先哲柏拉圖認為風,火,水,土是構成世界的四大元素。所有的物質最終都可以拆解成這四個元素.
而在網頁的世界裡,HTML, 表單 (Form), CSS, Javascript 則是網頁的四大構成元素.(註) 多數的網頁都可以由這四個元素組合產生.
Widget 表單屬於 Widget 的一個重要分支。由以下的基本網頁元件組成:
* 表單欄位元件 (Field) — 等同於 HTML 表單欄位的基本元素, 如文字欄位 [input type="text"] 文字區塊欄位 (textarea) 等等. 用來產生基本的表單欄位.
* 表單欄位列表元件 (WidgetList) - 用來有機地組合表單欄位元件, 產生欄位列表, 提供表單元件使用.
* 表單元件(Form) — 表單欄位, 驗證 資訊, 處理方式(post 或 get), 處理函式 (URI) 的集合. 可使用現有的驗證功能 validators.Schema 來做表單驗證.
除了基本的表單欄位元件,TurboGears 也透過 widget 提供了一些進階的表單欄位元件例如跳頁選單 (表單 + Javascript), 語法高亮 (HTML+CSS+Javascript), 標籤頁 (HTML+Javascript) 等元件,這些高級元件 (Rich Element) 也都是由這些網頁中最常見的基本元素所組成.
透過 widget 你可以自己建造自己的網頁元件,也可以透過 python 的擴充機制,很容易使用 easy_install 命令取得其他人共享出來的各種元件.
在使用高級元件之前,我們回到基本面上,先來看看如何用 widget 處理表單.
你可以在互動式直譯器 (interactive interpreter) 裡試驗 TurboGears widget.
產生 TextField
>>> # TextField
>>> from turbogears.widgets import *
>>> Field = TextField(label='Main Menu')
>>> Field.render()
'<input id="widget" class="textfield" name="widget" type="text">'
產生 TextArea
>>> # TextArea
>>> Field2 = TextArea(label="Description", attrs=dict(rows=3, cols=60))
>>> Field2 = TextArea(label="Description",
... attrs=dict(rows=3, cols=60))
...
>>> Field2.render()
'<textarea rows="3" cols="60" class="textarea" name="widget" id="widget"></textarea>'
>>>
在 Python 互動式直譯器裡你可以看到用 TurboGears widget 產生一個表單欄位並不困難.