TurboGears 开发人员称这个项目是一个 “大框架(megaframework)”,这是因为它是由现有的子项目构成的。TurboGears 可以帮助将很多主要组件集成在一起:
- MochiKit:JavaScript 库
- Kid:模板语言
- CherryPy:基本 Web 框架
- SQLObject:对象关系映射器(ORM)
安装 TurboGears
使用 TurboGears 的第一个步骤是确保我们已经安装了 Python。TurboGears 的最新版本需要 Python 2.4。请参见 参考资料 中 Python 主页的链接。
Setuptools 是 Python 社区开发的一个新项目,它可以更方便地安装并更新 Python 软件。软件以归档文件的形式进行打包,称为 Egg,这与 Java™ 的 JAR 文件或 Ruby GEM 文件类似,可以使用一个名为 easy_install 的工具下载并安装。
TurboGears 是第一个使用 setuptools 工具来进行分发和安装的大型 Python 项目。请参见 参考资料 中 setuptools 页面的链接和 TurboGears 的下载页面。
本文使用了撰写本文时最新的开发版本(0.9a5),这可以通过 preview 的下载页面得到:
easy_install -f http://www.turbogears.org/preview/download/index.html TurboGears
要获得最新版本的 TurboGears(目前是 0.8.9),我们可以简单地删除 -f 选项和 preview 站点的 URL:
easy_install TurboGears
检查 TurboGears 管理工具
在安装 TurboGears 之后,我们就应该有了管理工具 tg-admin,它在您自己的目录中。我们可以在命令行中输入 tg-admin 查看它是否存在:
清单 1. 使用 TurboGears 管理工具
快速启动
要启动 TurboGears 项目,我们需要使用 tg-admin quickstart 功能。我们会被要求提供一个项目名和一个目录名。对于本文来说,我创建了一个简单的购物车,名为 TG Commerce,它有一个名为 tgcommerce 的包:
清单 2. 启动 TurboGears 项目
TurboGears 使用下面的 tgcommerce 包创建一个 TG-Commerce 项目。我们现在可以启动这个项目提供的测试服务器了:
清单 3. 启动测试服务器
查看所提供的 URL 的测试页面,然后使用 Ctrl-C 杀掉这个服务器。
创建一个模型
SQLObject 是对象关系映射器(ORM)库,它让我们可以开发数据库持久的 Python 对象。我们定义一个 Python 类,并添加所需要的属性(域),然后让 SQLObject 生成创建表、插入新记录以及查找、更新或删除现有记录时所需用到的 SQL 语句。
SQLObject 可以支持多种数据库,包括 MySQL、PostgreSQL、Firebird 等。在 参考资料 给出的链接中我们可以找到有关 SQLObject 的更多信息。
在这个例子中,我们使用 SQLite 作为后台的数据库。SQLite 是一个轻量级的数据库,它不需要进行任何配置,只是以简单文件的形式保存在磁盘上。要使用 SQLite,我们需要使用 setuptools 安装 pysqlite 库:
easy_install pysqlite
要配置 TurboGears 数据库,我们需要在 dev.cfg 文件中指定 sqlobject.dburi。对于 SQLite 来说,我们要指定数据库文件所在的位置的路径:
清单 4. 开发配置文件(dev.cfg)
TurboGears 快速启动使用样例代码创建并提前生成了一个 model.py 文件。这就是 SQLObject 类应该保存的地方。最上面一节设置数据库连接信息:
清单 5. 模型样例代码(model.py)
接下来是模型类。每个类表示数据库中的一个表,它是使用一个映射为数据库列的类级属性定义的。这些属性是 SQLObject 列类型的实例,包括基本数据类型,例如 StringCol 和 CurrencyCol;以及关系类型,例如 ForeignKey 和 MultipleJoin。
对于这个购物车来说,有一个层次 Category 类和一个简单的 Product 类。目录层次是由父 ForeignKey 和子类 MultipleJoin 定义的。
清单 6. Category 和 Product 类(model.py,续)
要验证这个模型,请使用 tg-admin sql sql 命令显示创建所需要的表使用的 SQL 代码。注意 SQLObject 会为每个表都创建一个 id 列。即使没有定义主键,这种操作也会发生。有关 SQLObject 的更多文档,请参见 参考资料 给出的链接。
清单 7. 使用 “tg-admin sql sql” 命令查看数据库模式
下面是 Order 和 OrderItem 类,它们分别用来保存购物车和所购物品清单。由于 order 是一个 SQL 关键字,因此 Order 类的表名被使用sqlmeta 子类的表属性重新定义为 orders:
清单 8. Order 和 OrderItem 类(model.py,续)
使用 tg-admin sql create 命令创建数据库表:
清单 9. 使用 “tg-admin sql create” 命令创建数据库表
我们可以使用 tg-admin sql help 找到更多命令,包括删除表的命令。在使用这个命令时要特别小心,因为这会删除所有的表以及表中的数据。由于这个原因,在生产环境中应当锁定 tg-admin 命令。
使用 CatWalk 操纵模型
从 0.9 版本开始,TurboGears 提供了一组名为 Toolbox 的工具,其中包含了一个名为 CatWalk 的模型浏览器。CatWalk 是为那些希望使用一个 GUI 工具来快速创建、更新和删除模型中数据的开发人员设计的。
Toolbox 可以作为一个单独的服务器启动,它可以使用 tg-admin 命令来运行:
清单 10. 使用 tg-admin 启动 toolbox 服务器
如果浏览器没有自动打开这个地址,请手工输入 Toolbox 服务器所指定的 URL(http://localhost:7654/),并点击 CatWalk 链接打开 CatWalk。
图 1. CatWalk 工具
Toolbox 是面向开发人员的,而不是面向终端用户的,它最适合辅助完成数据模型化和为应用程序快速提供数据。我们可以使用 Ctrl-C 关闭 toolbox 服务器。在本文介绍中,我们将不会使用这个工具。
(来自 IBM developerworks)