TurboGears
TurboGears是一个提供网页前端到后端整合的网站框架,使用Python动态语言。
开发者 | Kevin Dangoor(原作者), Mark Ramm(TG2领头人)等。 |
---|---|
首次发布 | 2005年9月 |
当前版本 | 2.4.3[1](2020年3月1日,4年前) |
源代码库 | |
编程语言 | 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
引用
编辑- ^ Release 2.4.3. 2020年3月1日 [2020年3月2日].
- ^ ToscaWidgets Cookbook—TG2 v2.0 documentation. [2012-07-26]. (原始内容存档于2012-05-01).