首页>参考读物>计算机科学与技术>软件与程序设计

Web 应用程序快速开发使用TurboGears
作者 : Mark Ramm;Kevin Dangoor;Gigi Sayfan
译者 : 谭颖华 李虎
丛书名 : 华章程序员书库
出版日期 : 2008-01-03
ISBN : 7-111-22726-7
定价 : 45.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 330
开本 : 16开
原书名 : Rapid Web Applications with TurboGears
原出版社: PH
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

TurboGears利用Python的强大功能实现了易于使用的动态Web开发框架。该框架显著提高了开发人员的生产力,让开发人员能够更加轻松地创建易用性好并且运用了Ajax技术的动态Web应用程序。
  本书将帮助有经验的Web开发人员运用TurboGears来快速地提高生产力。通过阅读本书,你将会快速地构建第一个TurboGears的Web应用程序,接着一步一步扩展它,从而掌握实现这些增强功能的底层类库。书中将会深入探究一个真实的应用程序—WhatWhat Status(WhatWhat Status是一个开源的状态跟踪应用程序项目),来演示TurboGears在其中的应用。

主要内容
  ● 理解TurboGears应用程序的架构。
  ● 掌握SQLObject,掌握如何设置并使用它与TurboGears模型进行协作。
  ● 运用TurboGears视图技术,其中包括动态模板以及Ajax框架MochiKit。
  ● 通过TurboGears Widget将CSS、XHTML以及JavaScript融合在一起。
  ● 全面运用CherryPy和TurboGears控制器技术:小至decorator的使用,大到应用程序的部署。
  ● 探究TurboGears的工具箱。
  ● 在TurboGears应用程序中确保系统安全以及管理用户访问的权限。
  ● 本书的Web站点(turbogearsbook.com)包含了TurboGears的代码、指南、开发视频以及相关链接等内容。

图书特色

图书前言

本书旨在介绍如何使用TurboGears的丰富特性来实现更加快速的Web应用程序开发。
  为了实现这个目的,我们将本书分为以下几个部分:首先,介绍TurboGears的概貌以及 TurboGears 的组成部分的相互协作;接着,我们就开始具体实践并且创建一个简单的应用程序,从而让你对TurboGears 如何工作有一个简要了解;然后,我们把精力都投入到一个真实的项目管理应用程序,因为该应用程序充分利用了许多TurboGears 的高级特性。前面这三个部分旨在介绍TurboGears 核心组件最常用的特性,让你能够深刻理解TurboGears 的开发原理,同时也帮助你能够更快地构建Web应用程序。当阅读完前面三个部分之后,你应该能够使用  TurboGears 编写有一定复杂度的应用程序了。
  如果你希望进一步提高自己的开发水平,那么我们也为你准备了多个深入讲解TurboGears各方面技术的章节。而这些技术无疑能让开发过程变得更加轻松。
我们将深入研究MochiKit、SQLObject、Kid和CherryPy,也将对TurboGears的细节部分、widget以及decorator进行不同程度的深入探讨。我们还会讲述有关系统伸缩性和性能优化的内容,也会向你展示高级的设计模式,从而帮助你将自己的TurboGears编程能力提升到一个新的台阶。
  在阅读本书的过程中,还应该下载范例代码进行实践,多提问题,并且针对特定主题获取更多相关的信息。我们创建了www.turbogearsbook.com 站点,这是一个不断改变并充实的知识库,其中包含了各种我们无法写进本书的额外内容以及一些简单的本书没有涵盖的最新话题。
  阅读本书需要对诸如XHTML、CSS和JavaScript等Web技术有基本的认识,同时还需要对Python和关系数据库也有一定的理解。我们已经尽力降低了阅读本书的门槛,因为我们有针对性地选择了一些对以上一个或多个领域很生疏的读者来审阅本书,以确保读者能够拥有尽可能平滑的学习曲线。如果对以上所有技术都非常陌生,那么也可以从我们的站点上找到为你准备的一些文章、链接以及书目推荐。
  TurboGears的目标是让简单的事情易于实现,让困难的事情变得可行,而本书的目的也是如此。在阅读了前两章内容之后,可以轻松地构建基本的数据库驱动的站点。在接下来的几个章节中,将会找到构建复杂站点所需的工具。利用它们,可以为站点添加Ajax应用以及动态的用户界面。

封底文字

TurboGears利用Python的强大功能实现了易于使用的动态Web开发框架。该框架显著提高了开发人员的生产力,让开发人员能够更加轻松地创建易用性好并且运用了Ajax技术的动态Web应用程序。
  本书将帮助有经验的Web开发人员运用TurboGears来快速地提高生产力。通过阅读本书,你将会快速地构建第一个TurboGears的Web应用程序,接着一步一步扩展它,从而掌握实现这些增强功能的底层类库。书中将会深入探究一个真实的应用程序—WhatWhat Status(WhatWhat Status是一个开源的状态跟踪应用程序项目),来演示TurboGears在其中的应用。

主要内容
  ● 理解TurboGears应用程序的架构。
  ● 掌握SQLObject,掌握如何设置并使用它与TurboGears模型进行协作。
  ● 运用TurboGears视图技术,其中包括动态模板以及Ajax框架MochiKit。
  ● 通过TurboGears Widget将CSS、XHTML以及JavaScript融合在一起。
  ● 全面运用CherryPy和TurboGears控制器技术:小至decorator的使用,大到应用程序的部署。
  ● 探究TurboGears的工具箱。
  ● 在TurboGears应用程序中确保系统安全以及管理用户访问的权限。
  ● 本书的Web站点(turbogearsbook.com)包含了TurboGears的代码、指南、开发视频以及相关链接等内容。

作者简介

Mark Ramm;Kevin Dangoor;Gigi Sayfan:Mark Ramm: 是Humantech公司的IT经理,也是Compound Thinking公司的创始人。多年来,他使用了各种各样的技术来编写Web应用程序,其中包括Python、TurboGears、CGI、Perl、PHP、ASP、Java Struts以及Ruby on Rails。他为Linux Magazine杂志和多个在线出版物撰稿,同时也是顶尖的IT管理博客(http://compoundthinking.com/blog)的作者。
Kevin Dangoor: 是TurboGears的缔造者。他是一位专业程序员,有19年开发经验,一直致力于使用Python、Java以及Perl来构建数据库驱动的应用程序。
Gigi Sayfan : 擅长使用C/C++/C#/Python/Java进行跨平台的面向对象编程,尤其是大规模分布式系统的开发。他在各个领域都有丰富的经验,如对Web浏览器进行底层改造、即时通信、二维动画和造型、大规模进程控制、多媒体以及Web开发等。他还是多个软件开发杂志的撰稿人。

译者简介

谭颖华 李虎:暂无简介

图书目录

前言
致谢
第一部分 TurboGears 基础知识
第1章 TurboGears简介 2
1.1 为什么选择TurboGears 2
1.1.1 让简单的事情易于实现 2
1.1.2 让应用程序易于维护 3
1.2 TurboGears的历史 4
1.3 TurboGears、Ajax和Web 2.0 5
1.4 为什么TurboGears称得上“Pythonic” 5
1.5 可以使用TurboGears做什么 7
1.6 TurboGears的新功能 7
1.7 小结 8
第2章 TurboGears起步 9
2.1 安装TurboGears和SQLite 9
2.2 创建“Hello World”应用程序 11
2.3 使用简单模板 14
2.4 自定义问候语 15
2.5 小结 17
第3章 TurboGears应用程序的架构 18
3.1 什么是MVC 18
3.2 设计模式和面向对象MVC 19
3.3 了解SQLObject和TurboGears模型 21
3.4 了解CherryPy以及TurboGears控制器 24
3.5 了解Kid和TurboGears视图 26
3.6 MVC遇到了Ajax 27
3.7 小结 28
第二部分 构建简单的TurboGears应用程序
第4章 创建简单的应用程序 30
4.1 构建简单的书签收藏站点 30
4.2 测试TurboGears应用程序 36
4.3 增加书签的简易表单 38
4.4 小结 40
第5章 增强书签应用程序 42
5.1 更新模型 42
5.2 根据分类列出书签 44
5.3 更新表单 47
5.4 将所有部分融为一体 53
5.5 选择类别 54
5.6 小结 58
第三部分 探究实际TurboGears应用程序
第6章 在WhatWhat Status中探究更加
复杂的模型 60
6.1 WhatWhat Status是什么 60
6.2 登录并且使用WhatWhat Status 61
6.3 探究WhatWhat Status的模型 63
6.4 编写更好的模型类 69
6.4.1 将所有模型逻辑存放于模型方法中 69
6.4.2 将复杂的关联逻辑封装在新的类中 69
6.5 小结 70
第7章 WhatWhat Status中的控制器、
视图以及JavaScript 71
7.1 Dashboard控制器 71
7.1.1 WhatWhat中的安全和身份验证 72
7.1.2 探索Dashboard的index()方法 74
7.2 Dashboard模板 76
7.3 增加新的项目 78
7.4 Dashboard控制器:new_project 81
7.5 小结 83
第8章 WhatWhat Status中的RSS、
Cookies和动态视图 84
8.1 Cookies和最近更新 84
8.2 Recent Changes模板 88
8.3 WhatWhat Status中的Widget 91
8.4 使用FeedController简化RSS 93
8.5 小结 96
第9章 Ajax和WhatWhat Status项目 97
9.1 处理Ajax请求 97
9.1.1 Ajax请求/HTML响应 97
9.1.2 Ajax请求/JSON响应 98
9.1.3 Ajax和XML请求 98
9.2 深入研究Project控制器的方法 99
9.3 初识project.kid 102
9.3.1 为项目页面做好铺垫 102
9.3.2 使用Ajax更新项目状态以及项目
描述 104
9.4 小结 106
第四部分 SQLObject与TurboGears模型
第10章 SQLObject基础 110
10.1 ORM基础 110
10.1.1 谁需要ORM 111
10.1.2 ORM的替代方案 111
10.1.3 ORM的劣势 111
10.2 SQLObject的基本特性 112
10.2.1 基本的连接管理 112
10.2.2 根据SQLObject的继承类
自动创建数据库的框架 114
10.2.3 使用Metadata类对行为进行
细微的控制 114
10.2.4 根据已有的数据库框架自动
生成表描述 115
10.3 简单数据库查询 115
10.3.1 通过ID获取单个对象 116
10.3.2 获取整个数据表 116
10.3.3 根据列值获取数据行 118
10.4 小结 119
第11章 精通SQLObject 120
11.1 映射关联 120
11.1.1 一对多关联 120
11.1.2 多对多关联 122
11.2 直接的SQL查询 124
11.3 智能查询 125
11.3.1 基于sqlbuilder的查询 125
11.3.2 多表联合查询 127
11.3.3 表连接 128
11.3.4 嵌套查询 129
11.4 操作大型结果集 129
11.4.1 以子集的方式操作大型结果集,
而非list()方法 129
11.4.2 别实例化大型数据集,直接
使用SQL 131
11.4.3 对大量的插入、更新和删除
操作使用相同的方法 132
11.4.4 别为了一个对象而多次访问
数据库 132
11.5 小结 133
第12章 自定义SQLObject的功能 134
12.1 使用sqlmeta自定义SQLObject类 134
12.1.1 深入探索sqlmeta类 135
12.1.2 列、索引和连接 135
12.1.3 命名技巧 136
12.1.4 延迟更新和缓存 137
12.1.5 过期数据行 138
12.1.6 默认排序 138
12.2 高级的SQLObject自定义 138
12.2.1 增加魔力属性 139
12.2.2 覆写属性访问 140
12.3 SQLObject和继承 141
12.3.1 Python对象、继承和聚合 141
12.3.2 聚合与标准Python继承的比较 141
12.3.3 SQLObject聚合与继承的比较 143
12.4 SQLObject和事务 145
12.4.1 事务和连接 145
12.4.2 sqlhub和事务 148
12.4.3 使用包装函数封装事务 149
12.4.4 使用修饰器封装事务 150
12.5 小结 151
第五部分 TurboGears视图技术
第13章 使用Kid实现动态模板 154
13.1 使用Kid创建动态模板 154
13.1.1 使用Python增强的处理指令符 155
13.1.2 生成内容的表达式 155
13.1.3 控制结构 156
13.1.4 Kid的内建函数 158
13.2 超越基础:让模板保持DRY 158
13.2.1 使用py:match进行转化 159
13.2.2 使用py:match创建自定义标签 161
13.2.3 使用py:extends创建父模板 162
13.3 融会贯通 162
13.4 小结 164
第14章 使用MochiKit创建更好的
JavaScript代码 165
14.1 概述 165
14.1.1 MochiKit的封装 166
14.1.2 MochiKit的交互式命令解释程序 166
14.2 MochiKit及其交互式命令解释
程序简介 166
14.3 Base方法 167
14.3.1 比较问题 167
14.3.2 更复杂的比较问题 168
14.3.3 JavaScript中的对象 169
14.3.4 JavaScript和Python的区别 170
14.3.5 对象的表示 170
14.3.6 JSON序列化 172
14.3.7 使用数组 173
14.3.8 Pythonic版的this 175
14.3.9 对调用函数的优化 176
14.3.10 类字典对象 177
14.3.11 使用查询字符串 177
14.3.12 MochiKit.Base中的函数 178
14.4 JavaScript中的迭代器 179
14.4.1 创建一个迭代器 179
14.4.2 Itertools中的工具 180
14.4.3 MochiKit.Iter所特有的函数 182
14.5 文档对象模型 182
14.5.1 获取元素 183
14.5.2 使用样式 183
14.5.3 创建DOM节点 188
14.5.4 简单事件 190
14.5.5 其他DOM函数 190
14.6 使用MochiKit.Logging来调试程序 191
14.6.1 使用Logging 191
14.6.2 扩展Logging 192
14.6.3 简单的日志示例 193
14.7 使用颜色 194
14.7.1 示例 194
14.7.2 获得颜色的更多方法 198
14.7.3 颜色转换 199
14.7.4 修改颜色 199
14.8 字符串的转换和值的格式化 199
14.8.1 处理日期和时间 200
14.8.2 格式化数字 200
14.8.3 其他格式化函数 201
14.9 小结 202
第15章 使用MochiKit增强Ajax 203
15.1 处理异步事件—包括Ajax请求 203
15.1.1 处理迟来的结果 203
15.1.2 创建一个请求 204
15.1.3 错误处理 205
15.1.4 参数传递 205
15.1.5 Ajax的局限性 206
15.1.6 使用JSON 206
15.1.7 使用计时器 207
15.1.8 取消 207
15.1.9 Ajax、计时器和取消的组合 208
15.1.10 深入了解回调函数 208
15.2 使用MochiKit.Signal处理JavaScript
事件 209
15.2.1 初识MochiKit.Signal 209
15.2.2 连接与断开连接 212
15.2.3 使用MochiKit的Cross-Browser
Event对象 212
15.2.4 自定义事件 214
15.3 “WowFactor”的视觉效果 215
15.3.1 圆角效果 215
15.3.2 初识Effects 216
15.3.3 效果选项 217
15.3.4 核心效果 218
15.3.5 组合效果 218
15.3.6 自定义效果 219
15.3.7 效果示例 221
15.3.8 Sortables和DragAndDrop 228
15.4 小结 230
第16章 TurboGears Widget:将CSS、
XHTML和JavaScript融合为
可复用的组件 231
16.1 理解Widget 231
16.1.1 初始化时候的自定义 232
16.1.2 呈现时候的属性赋值 233
16.1.3 在Widget中使用可调用对象 233
16.2 表单Widget 234
16.2.1 自定义表单布局 234
16.2.2 表单字段Widget 235
16.3 复合Widget 236
16.4 Widget与校验 238
16.4.1 FormEncode校验器如何集成
至表单Widget中 238
16.4.2 更多的校验器 239
16.4.3 模式校验基础 241
16.5 CSS、JavaScript和Widget 242
16.6 创建自定义Widget 242
16.7 Ajax Widget的剖析 245
16.8 小结 247
第六部分 CherryPy与TurboGears控制器技术
第17章 CherryPy和TurboGears的
修饰器 250
17.1 CherryPy的URL解析 250
17.2 CherryPy与HTTP请求/响应循环 251
17.3 CherryPy过滤器 253
17.3.1 输入过滤器 253
17.3.2 输出过滤器 254
17.3.3 自行创建过滤器 254
17.4 CherryPy和TurboGears配置 255
17.5 修饰器 256
17.5.1 expose() 256
17.5.2 validate() 257
17.6 错误及异常处理 258
17.6.1 有效性错误 258
17.6.2 复合句柄 259
17.6.3 Exception Handling 259
17.7 TurboGears中的REST样资源 260
17.8 小结 262
第18章 部署TurboGears 263
18.1 选择部署环境 263
18.1.1 服务器使用的作业系统
Linux、Mac OS、Windows 263
18.1.2 该在其他网页服务器后运行
CherryPy吗 264
18.1.3 TurboGears基础部署设定 264
18.2 使用mod_rewrite或mod_proxy
连接到CherryPy 265
18.2.1 在CherryPy前使用代理的
优缺点 265
18.2.2 设定Apache与mod_rewrite 266
18.2.3 设定Apache以直接提供静态
文件连接 266
18.2.4 设定CherryPy在网页服务器后
工作 266
18.2.5 确保CherryPy持续运作 267
18.3 在mod_python上运行CherryPy 268
18.3.1 使用mod_python的优缺点 268
18.3.2 为mod_python设定Apache/
CherryPy 269
18.4 在网页服务器后运行CherryPy
的其他方法 269
18.5 网站的扩充性 270
18.5.1 扩充Sessions 270
18.5.2 扩充程序 270
18.5.3 低花费的扩充 271
18.6 小结 271
第七部分 TurboGears扩展
第19章 TurboGears的工具箱及其工具 274
19.1 工具箱简介 274
19.2 ModelDesigner 275
19.3 CatWalk 277
19.4 WebConsole 279
19.5 Widget浏览器 280
19.6 Admi18n和System Info 281
19.7 tg-admin命令 281
19.8 其他TurboGears工具 282
19.9 小结 282
第20章 国际化 284
20.1 在Python中处理Unicode 284
20.2 在TurboGears中处理Unicode 285
20.2.1 SQLObject和Unicode 285
20.2.2 Kid模板 286
20.2.3 CherryPy的请求/响应循环
中的Unicode 287
20.3 翻译应用程序 287
20.3.1 Python源所在的位置 288
20.3.2 Kid模板的地域化 289
20.3.3 自动检测用户的语言偏好 290
20.3.4 具体地域对象 290
20.3.5 Admin i18n 界面 291
20.4 小结 292
第21章 测试TurboGears应用程序 293
21.1 Nose 293
21.2 TurboGears中的testutil 297
21.3 Mechanize 301
21.4 Selenium 303
21.5 小结 307
第22章 TurboGears中的Identity和
安全问题 308
22.1 使用Identity进行基本的身份验证
和用户授权 308
22.2 使用Identity验证用户访问 313
22.3 避免常见的安全隐患 314
22.4 小结 315
附录 SQLAlchemy 316

教学资源推荐
作者: Brian W.Kernighan,Rob Pike
作者: 朱鸣华 罗晓芳 董明 孟军 汪德刚 编著
作者: Y. Daniel Liang
参考读物推荐
作者: 张良均 谭立云 刘名军 江建明 著
作者: [美]阿尔文·亚历山大(Alvin Alexander) 著