TurboGears
TurboGears是一個提供網頁前端到後端整合的網站框架,使用Python動態語言。
![]() | |
開發者 | Kevin Dangoor(原作者), Mark Ramm(TG2領頭人)等。 |
---|---|
首次發布 | 2005年9月 |
當前版本 |
|
原始碼庫 | |
程式語言 | Python |
作業系統 | 跨平台 |
類型 | Web應用框架 |
許可協議 | MIT許可證、GNU寬通用公共許可證 |
網站 | www |
Python語言上有眾多網頁開發模組可選擇。要挑選合適的模組會花上開發者寶貴的時間精力,TurboGears就像是Python網頁開發上的發佈套件(Linux發行版),整合各種推薦的Python開放原始碼模組,提供簡單易用的介面與一致的系統體驗。
特色
編輯選用最好的Python開源組件,可自由組合偏好的開發模塊,提供互動式的開發經驗。內建網頁伺服器,ORM、AJAX能力,預設可以產生html、json等格式。不用安裝Apache網頁伺服器就可以開始開發網頁應用程式,可以單獨佈署或搭配Apache、lighttpd網頁伺服器使用。有方便的佈署能力,有眾多插件支援。
TurboGears組件
編輯TurboGears使用MVC(模型、視圖、控制器)的方式組織網站,提供網頁框架快速生成工具,開發中自動即時重載的網頁伺服器。TurboGears是由許多各自獨立的庫和中間層建立的。其中一些默認的工具從1.x至2.x各不相同,但是大多數的這些組件都能根據配置而被互相替用。以下是一些開發者會使用到的主要組件。
TurboGears 2.x組件
編輯- SQLAlchemy(模型)- 定義了數據表的結構,並且讓用戶的控制層可以訪問這些對象。
- Ming(模型)- 提供到MongoDB的數據訪問層,非常像SQLAlchemy,它定義如何連接MongoDB搜集到用戶的控制器可以交互的Python對象。
- Genshi(視圖)- 定義了用以生成HTML或XHTML的模板,用於前台和客戶端訪問的頁面。
- Repoze - Repoze.who 是用來處理安全(訪問授權)控制,repoze預先聲明了誰在什麼條件下可以訪問哪些頁面。
- ToscaWidgets - 這是主要用來創建表單和複雜GUI的一個庫。Tosca默認只會生成簡單的HTML表單,但是也能用來連接更高級的JavaScript工具包。不同於TurboGears 1.x,現在已不再去擁有一個集成的JavaScript庫。[2]
- Gearbox - 是TurboGears用來管理項目的工具箱,建立新項目並充當TurboGears應用,但是用戶也可以連結到Apache、Nginx或任何其他WSGI兼容的webserver。
在版本2.3之前還用到:
- Pylons(控制器)- 負責處理後台邏輯與顯示數據的頁面之間的中間層。
- Paster - 默認作為伺服器。但是用戶也可以連接Apache、Nginx、或者使用WSGI兼容伺服器。
- Repoze.what - 用來分別處理授權。
TurboGears 1.x組件
編輯- SQLObject(模型) - 可以在很多資料庫伺服器上建立資料庫或同現存數據相接合的數據後端。
- SQLAlchemy在版本1.1之後中成為默認的庫。
- Kid(視圖)- XHTML前端模板引擎,這裡所有模板都是有效的XHTML或XML文件,它們通常以允許將這些模板作為簡單的XHTML文件打開檢查設計的方式來製作。同時還提供以XML式的方式嵌入Python片段的特徵。
- Genshi是個比Kid更成功的模板引擎,在版本1.1之後中成為默認支持,在語法上100%接近Kid。
- CherryPy(控制器)- 允許web應用通過書寫返回數據到(在TurboGears情況下)模板的事件處理器的方式來編程。相同的數據還可以按Ajax風格接收為一個JSON數據流。
- MochiKit - 對於TurboGears 1.x來說,是一個推薦的可選的JavaScript庫。被設計來讓JavaScript的開發更加Python化。主要用於實現Ajax特性,提供一些能夠異步取得JSON數據流的組件。
參考資料
編輯- Ramm, M; Dangoor, K; Sayfan, G (November 7, 2006). Rapid Web Applications with TurboGears, Prentice Hall. ISBN 0-13-243388-5
引用
編輯- ^ 1.0 1.1 Release 2.4.3. 2020年3月1日 [2020年3月2日].
- ^ ToscaWidgets Cookbook—TG2 v2.0 documentation. [2012-07-26]. (原始內容存檔於2012-05-01).