Zope是一种支持多种平台的Web应用服务器软件,它提供了完善的功能和强大的动力,适用于构建各种类型的Web应用,从小型网站到企业级分布式网络应用都有Zope的用武之地。Zope在许多方面都超过了ASP、PHP、JSP等传统方法,是一套优秀而完整的解决方案。本书详细讲述了Zope的使用方法,通过丰富多彩的例子让你领略Zope的强大功能。\r\n\r\n 本书内容丰富,图文并茂,是国内第一本专门讲述Zope的译著。本书适合对网络软件感兴趣的各级人士阅读。\r\n
\r\n
第一部分 介绍Zope \r\n\r\n 第1章 Zope简介 \r\n\r\n 1. 1 Zope是什么 \r\n\r\n 1. 1. 1 强大的协作 \r\n\r\n 1. 1. 2 简单的内容管理 \r\n\r\n 1. 1. 3 Web组件 \r\n\r\n 1. 2 Zope的历史 \r\n\r\n 1. 3 谁能从Zope中获益 \r\n\r\n 1. 4 你如何从Zope中获益 \r\n\r\n 1. 5 Zope给你什么 \r\n\r\n 1. 6 Zope相关软件 \r\n\r\n 1. 7 Zope社团 \r\n\r\n 第2章 使用Zope \r\n\r\n 2. 1 下载Zope \r\n\r\n 2. 2 安装Zope \r\n\r\n 2. 2. 1 为Windows安装Zope \r\n\r\n 2. 2. 2 下载Linux和Solaris二进制文件 \r\n\r\n 2. 2. 3 得到RPM和deb格式的Zope \r\n\r\n 2. 2. 4 从源码编译Zope \r\n\r\n 2. 3 启动Zope \r\n\r\n 2. 3. 1 启动Windows上的Zope \r\n\r\n 2. 3. 2 启动UNIX上的Zope \r\n\r\n 2. 4 登录 \r\n\r\n 2. 5 用管理界面控制Zope \r\n\r\n 2. 5. 1 使用导航栏 \r\n\r\n 2. 5. 2 使用工作栏 \r\n\r\n 2. 6 理解Zope用户 \r\n\r\n 2. 6. 1 创建用户 \r\n\r\n 2. 6. 2 更换登录 \r\n\r\n 2. 7 理解Zope对象 \r\n\r\n 2. 7. 1 创建对象 \r\n\r\n 2. 7. 2 移动对象 \r\n\r\n 2. 8 撤消错误 \r\n\r\n 2. 8. 1 撤消细节和注意事项 \r\n\r\n 2. 9 管理和监控Zope \r\n\r\n 2. 10 使用帮助系统 \r\n\r\n 2. 10. 1 浏览和搜索帮助 \r\n\r\n 2. 11 从Zope指南开始 \r\n\r\n 第3章 使用基本Zope对象 \r\n\r\n 3. 1 使用Zope文件夹 \r\n\r\n 3. 1. 1 管理文件夹内容 \r\n\r\n 3. 1. 2 导入和导出对象 \r\n\r\n 3. 2 使用Zope文档 \r\n\r\n 3. 2. 1 创建DTML文档 \r\n\r\n 3. 2. 2 编辑DTML文档 \r\n\r\n 3. 2. 3 回顾文档更改 \r\n\r\n 3. 2. 4 观看DTML文档 \r\n\r\n 3. 3 使用Zope文件 \r\n\r\n 3. 3. 1 上载文件 \r\n\r\n 3. 3. 2 观看文件 \r\n\r\n 3. 4 使用Zope图像 \r\n\r\n 3. 4. 1 使用HTML观看图像 \r\n\r\n 3. 4. 2 通过Web观看图像 \r\n\r\n 3. 5 使用对象属性 \r\n\r\n 3. 6 用脚本编写逻辑代码 \r\n\r\n 3. 7 使用方法 \r\n\r\n 3. 7. 1 比较DTML文档和方法 \r\n\r\n 3. 8 使用版本 \r\n\r\n 3. 9 缓存管理器 \r\n\r\n 3. 9. 1 添加一个缓存管理器 \r\n\r\n 3. 9. 2 缓存一个文档 \r\n\r\n 3. 10 虚拟主机对象 \r\n\r\n 第4章 使用DTML动态生成内容 \r\n\r\n 4. 1 DTML适合谁 \r\n\r\n 4. 2 DTML适合做什么 \r\n\r\n 4. 3 何时不使用DTML \r\n\r\n 4. 4 DTML标记符句法 \r\n\r\n 4. 4. 1 使用DTML标记符属性 \r\n\r\n 4. 5 用DTML插入变量 \r\n\r\n 4. 6 处理从表单输入的信息 \r\n\r\n 4. 7 动态地获取内容 \r\n\r\n 4. 8 通过DTML使用Python表达式 \r\n\r\n 4. 8. 1 DTML表达式注意事项 \r\n\r\n 4. 9 var标记符 \r\n\r\n 4. 9. 1 var标记符属性 \r\n\r\n 4. 9. 2 var标记符实体句法 \r\n\r\n 4. 10 计标记符 \r\n\r\n 4. 10. 1 名称句法和表达式句法的不同 \r\n\r\n 4. 10. 2 else和elif标记符 \r\n\r\n 4. 10. 3 通过证标记符使用Cookies \r\n\r\n 4. 11 地标记符 \r\n\r\n 4. 11. 1 叠代文件夹内容 \r\n\r\n 4. 11. 2 in标记符特殊变量 \r\n\r\n 第5章 创建基本Zope应用程序 \r\n\r\n 5. 1 使用文件夹构建应用程序 \r\n\r\n 5. 1. 1 用URL调用文件夹里的对象 \r\n\r\n 5. 1. 2 特殊的文件夹对象——index_html \r\n\r\n 5. 2 构建Zope动物园Web站点 \r\n\r\n 5. 2. 1 动物园导航 \r\n\r\n 5. 2. 2 给动物园添加一个首页 \r\n\r\n 5. 2. 3 改进导航 \r\n\r\n 5. 2. 4 提取出样式单 \r\n\r\n 5. 2. 5 创建一个文件库 \r\n\r\n 5. 2. 6 构建一个访客簿 \r\n\r\n 5. 2. 7 扩展访客簿, 生成XML \r\n\r\n 第二部分 使用Zope创建Web应用程序 \r\n\r\n 第6章 用户和安全 \r\n\r\n 6. 1 介绍安全 \r\n\r\n 6. 1. 1 登录和退出Zope \r\n\r\n 6. 1. 2 验证和授权 \r\n\r\n 6. 2 验证和管理用户 \r\n\r\n 6. 2. 1 在用户文件夹中创建用户 \r\n\r\n 6. 2. 2 编辑用户 \r\n\r\n 6. 2. 3 定义用户位置 \r\n\r\n 6. 2. 4 使用其他类型的用户文件夹 \r\n\r\n 6. 2. 5 特殊用户账号 \r\n\r\n 6. 3 授权和管理安全 \r\n\r\n 6. 3. 1 处理角色 \r\n\r\n 6. 3. 2 定义角色 \r\n\r\n 6. 3. 3 理解本地角色 \r\n\r\n 6. 3. 4 理解许可 \r\n\r\n 6. 3. 5 定义安全策略 \r\n\r\n 6. 3. 6 安全策略获取 \r\n\r\n 6. 4 安全用法模式 \r\n\r\n 6. 4. 1 重要安全准则 \r\n\r\n 6. 4. 2 全局和本地策略 \r\n\r\n 6. 4. 3 把控制委派给本地管理员 \r\n\r\n 6. 4. 4 不同的角色访问层次 \r\n\r\n 6. 4. 5 用角色控制访问位置 \r\n\r\n 6. 5 执行安全检查 \r\n\r\n 6. 6 高级安全专题:所有权和可执行内容 \r\n\r\n 6. 6. 1 问题:特洛伊木马攻击 \r\n\r\n 6. 6. 2 管理所有权 \r\n\r\n 6. 6. 3 可执行内容的角色 \r\n\r\n 6. 6. 4 代理角色 \r\n\r\n 第7章 变量和高级DTML \r\n\r\n 7. 1 变量如何被查找 \r\n\r\n 7. 2 DTML名称空间 \r\n\r\n 7. 2. 1 DTML客户对象 \r\n\r\n 7. 2. 2 DTML请求对象 \r\n\r\n 7. 2. 3 变量 \r\n\r\n 7. 3 修改DTML名称空间 \r\n\r\n 7. 3. 1 in标记符名称空间修改 \r\n\r\n 7. 3. 2 with标记符 \r\n\r\n 7. 3. 3 let标记符 \r\n\r\n 7. 4 DTML名称空间实用函数 \r\n\r\n 7. 5 DTML安全 \r\n\r\n 7. 5. 1 安全脚本限制 \r\n\r\n 7. 6 高级DTML标记符 \r\n\r\n 7. 6. 1 call标记符 \r\n\r\n 7. 6. 2 comment标记符 \r\n\r\n 7. 6. 3 tree标记符 \r\n\r\n 7. 6. 4 return标记特 \r\n\r\n 7. 6. 5 sendmail标记符 \r\n\r\n 7. 6. 6 mime标记符 \r\n\r\n 7. 6. 7 unless标记符 \r\n\r\n 7. 6. 8 用in标记符进行成批处理 \r\n\r\n 7. 6. 9 处理例外的标记符 \r\n\r\n 第8章 高级Zope脚本 \r\n\r\n 8. 1 Zope脚本 \r\n\r\n 8. 2 调用脚本 \r\n\r\n 8. 2. 1 从Web调用脚本 \r\n\r\n 8. 2. 2 从其他对象调用脚本 \r\n\r\n 8. 2. 3 给脚本传递参数 \r\n\r\n 8. 3 脚本安全 \r\n\r\n 8. 4 Zope API \r\n\r\n 8. 5 使用基于Python的脚本 \r\n\r\n 8. 5. 1 Python语言 \r\n\r\n 8. 5. 2 创建基于Python的脚本 \r\n\r\n 8. 5. 3 字符串处理 \r\n\r\n 8. 5. 4 处理数学 \r\n\r\n 8. 5. 5 绑定变量 \r\n\r\n 8. 5. 6 打印语句支持 \r\n\r\n 8. 5. 7 安全限制 \r\n\r\n 8. 5. 8 内建函数 \r\n\r\n 8. 6 使用外部方法 \r\n\r\n 8. 6. 1 用外部方法处理XML \r\n\r\n 8. 6. 2 外部方法注意事项 \r\n\r\n 8. 7 使用基于Perl的脚本 \r\n\r\n 8. 7. 1 Perl语言 \r\n\r\n 8. 7. 2 创建基于Perl的脚本 \r\n\r\n 8. 7. 3 基于Perl的脚本安全 \r\n\r\n 8. 8 DTML. Python和Perl的对比 \r\n\r\n 8. 9 远程脚本处理和网络服务 \r\n\r\n 8. 9. 1 使用XML-RPC \r\n\r\n 8. 9. 2 用HTTP处理远程脚本 \r\n\r\n 第9章 内容搜索和分类 \r\n\r\n 9. 1 群组目录化初步 \r\n\r\n 9. 2 配置目录册 \r\n\r\n 9. 2. 1 定义索引 \r\n\r\n 9. 2. 2 定义元数据 \r\n\r\n 9. 3 搜索目录册 \r\n\r\n 9. 3. 1 用表单搜索 \r\n\r\n 9. 3. 2 通过Python搜索 \r\n\r\n 9. 4 搜索和索引细节 \r\n\r\n 9. 4. 1 搜索文本索引 \r\n\r\n 9. 4. 2 词汇(Vocabularies) \r\n\r\n 9. 4. 3 搜索字段索引 \r\n\r\n 9. 4. 4 搜索关键字索引 \r\n\r\n 9. 5 连接查询 \r\n\r\n 9. 6 存储查询 \r\n\r\n 9. 7 自动目录化 \r\n\r\n 第10章 关系数据库连通 \r\n\r\n 10. 1 使用数据库连接对象 \r\n\r\n 10. 2 使用Z SQL方法 \r\n\r\n 10. 2. 1 调用Z SQL方法 \r\n\r\n 10. 2. 2 给Z SQL方法提供参数 \r\n\r\n 10. 3 动态SQL查询 \r\n\r\n 10. 3. 1 用sqlvar标记符插入参数 \r\n\r\n 10. 3. 2 用sqltest进行等式比较 \r\n\r\n 10. 3. 3 用sqlgroup标记符创建复杂的查询 \r\n\r\n 10. 4 高级技巧 \r\n\r\n 10. 4. 1 用显式参数调用Z SQL方法 \r\n\r\n 10. 4. 2 从其他对象获取参数 \r\n\r\n 10. 4. 3 直接访问结果对象 \r\n\r\n 10. 4. 4 类和结果对象的绑定 \r\n\r\n 10. 4. 5 缓存结果 \r\n\r\n 10. 4. 6 事务处理(transaction) \r\n\r\n 第三部分 使用Zope开发高级Web应用程序 \r\n\r\n 第11章 可升级能力和ZEO \r\n\r\n 11. 1 什么是ZEO \r\n\r\n 11. 2 何时应该使用ZEO \r\n\r\n 11. 3 安装和运行ZEO \r\n\r\n 11. 4 如何在多台计算机上运行ZEO \r\n\r\n 11. 5 如何分配负载 \r\n\r\n 11. 5. 1 用户选择一个镜像 \r\n\r\n 11. 5. 2 使用Round-Robin DNS分配负载 \r\n\r\n 11. 5. 3 使用Layer 4交换分配负载 \r\n\r\n 11. 5. 4 处理唯一失效点 \r\n\r\n 11. 5. 5 ZEO服务器细节 \r\n\r\n 11. 6 ZEO注意事项 \r\n\r\n 第12章 扩展Zope \r\n\r\n 12. 1 创建Zope产品 \r\n\r\n 12. 2 创建一个简单产品 \r\n\r\n 12. 3 创建ZClass \r\n\r\n 12. 3. 1 创建ZClass视图 \r\n\r\n 12. 3. 2 创建ZClass的属性 \r\n\r\n 12. 3. 3 创建ZClass方法 \r\n\r\n 12. 3. 4 ObjectManager ZClass \r\n\r\n 12. 3. 5 ZClass安全控制 \r\n\r\n 12. 3. 6 控制访问方法和属性单 \r\n\r\n 12. 3. 7 控制访问ZClass实例 \r\n\r\n 12. 3. 8 为ZClass提供上下文相关的帮助 \r\n\r\n 12. 4 使用Python基础类 \r\n\r\n 12. 5 分发产品 \r\n\r\n 第四部分 附录 \r\n\r\n 附录A DTML参考 \r\n\r\n 附录B API参考 \r\n\r\n 附录C Zope资源 \r\n\r\n 附录D 开放出版物许可 \r\n
\r\n
Zope是一种跨平台的Web应用服务器软件, 它功能完善而强大, 提供了统一的Web应用开发环境, 正在被越来越多的用户所关注.
Zope自带有Web和 FTP服务器. 本身的管理采用对象数据库, 支持事务处理
(transaction). 它比现有的其他应用服务器软件更为突出面向对象的特色. 通过创建各种对象, 实现对数据的高效管理. 对象可以是各种文件. 程序. 脚本. 数据库连接等. 各种对象可以通过多种方式管理. 它提供统一的管理界面, 通过Web浏览器可以非常方便地实现对各种对象的管理和操作. 你可以进行创建. 编辑. 复制. 删除. 撤消等操作. 你还可以通过FTP. WebDAV等其他方式管理.
Zope不仅可以使用HTML文件编写网页, 它还可以通过其特有的DTML和服务器端脚本创建动态的页面. 脚本所采用的语言主要是Python语言或 Pert语言, 从而提供了强大的灵活性. 因此, 立完全可以替代PHP. ASP. JSP等方法. Zope通过其特有的对象获取机制, 实现了各种更为方便和高效的调用, 还能够发挥出Python或Perl语言强大的功能, 轻松地处理事务逻辑.
Zope通过对象数据库实现对象的搜索, 它内建有搜索引擎, 帮助你简单快速地实现对象搜索. 另外, Zope支持大部分关系数据库. 通过数据库适配器进行连接后, 就可以把关系数据看成是对象, 通过DTML. 脚本. 类文件等来调用数据. Zope给你提供了非常方便的调用方法.
Zope有许多非常有意思的功能, 其中之一就是协同开发. 它支持众多的用户一起开发建设站点. 通过用户管理工具和版本控制工具, 实现集团开发模式, 从而使得维护和管理的成本降低. Zope在安全方面考虑得非常全面, 通过验证. 授权. 角色. 许可. 安全策略等方法实现了多种安全模式. 在极大程度上方便了网站的维护.
另外, Zope提供了足够的灵活性, 它不仅通过多种脚本语言可以进行功能扩展, 还可以通过企业对象实现负载均衡, 提供了大规模扩展能力. 通过Zope提供的API. ZClass等工具, 你可以轻松地实现定制功能. 非常有意思的是, 它还支持产品的概念. 你可以创建自己的Zope产品, 从而实现分发和转移产品.
Zope是免费的, 开放源代码, 任何人都可以使用它. Zope支持多种平台, 包括Windows. UNIX. Linux等, 它还支持XML. Zope里的每个对象都能够转换成XML, 从而方便信息的交换. Zope还有许多特性值得探索, 比如导入/导出功能等. 当你使用过Zope以后, 你就会觉得它确实不错, 难怪它获得多个奖项. 在www. zope. org站点上, 你可以发现非常多的Zope资源.
Zope的思想很新颖, 它从页面表现. 业务逻辑和数据库方面提供了一体化的解决方案, 还提供了丰富的管理工具, 以及丰富. 完善. 成熟和强大的功能, 值得广大的网络爱好者学习. 如果你想学习ASP. PHP或者JSP, 以及Servlet或者Cold Fusion, 在学习之前最好考虑一下Zope. 这会对你非常有益处. 你会发现, Zope要比它们全面得多.
在阅读本书的时候, 请注意一些相关的概念, 比如业务逻辑(business logic). 事务处理(transaction). 表现(presentation). 获取(acquisition)等概念. 如果你有任何问题, 或者建议, 请发送至zope@dohao. org. 译者的主页对本书提供最为全面的支持:http://www. dohao. org/ zope
杜文山
2001年10月
Amos Latteier是Zope公司的一名软件工程师. 他仅用一天半就掌握了Python. 他是第一批Bobo用户中的一个, Bobo是Zope的前身. 通过使用Bobo, 他为惠普公司和其他用户编写了Web应用程序. 后来, 他加入了Zope公司, 并且促成了Zope软件的出现. Amos编写了Zope中大部分的初始网络和XML支持代码. 最近, 他开发了培训材料, 编写在线帮助系统, 并且撰写官方文档和关于Zope的杂志文章. 他正在计划着Zope的未来方向.
Michel Pelletier
欢迎阅读《Zope指南》. 这本书编写的目的是为了给你介绍Zope和使用方法. Zope是一种开放源码的Web应用程序服务器. 如果你对编写Web页面. 编写Web脚本程序. 使用数据库. 管理内容. 完成Web协同开发任务感兴趣, 那么你应该阅读这本书.
谁应该阅读这本书?
这本书对于现有的Zope用户和刚开始接触Zope的人们都具有吸引力:
阅读这本书或使用Zope不需要你是一名编程员.
你应该大致了解Web是如何工作的, 包括基本理解HTML和URL.
你应该知道Web浏览器和Web服务器是什么, 并且大致了解它们是如何通信的.
本书的第一部分讲解如何通过Zope的Web管理界面来管理动态内容. 这些章中的概念是基本Zope概念, 它们给你显示如何使用Zope在Web上发布内容.
本书后边的部分讲述高级的主题, 比如关系数据库. 用各种程序语言编写脚本. XML等. 这些章不教授关系数据库. 编程或XML的具体内容——它们只是给你显示如何通过Zope使用这些技术.
这本书是如何组织的?
以下提供了这本书的组织方式, 同时也是每章的概要.
第一部分 Zope简介
这些章让读者了解并运行Zope, 学习基本Zope对象和习惯用语.
第1章 介绍Zope
第1章讲解什么是Zope以及它是为谁开发的, 以画龙点睛的方式描述了你用Zope都可以做些什么. 你还将学习zope和其他web应用服务器的区别.
第2章 使用Zope
第2章讲解最重要的Zope概念. 在学习完这一章以后, 你将能够使用Zope创建和管理简单而强大的Web应用程序.
第3章 使用基本Zope对象
第3章介绍对象, 对象是Zope里的最重要的元素. 在这一章里, 我们讲述了通常什么是对象, 然后, 我们引入基本Zope对象:文件夹. DTML文档. DTML方法. 文件和图像.
第4章 使用DTML动态生成内容
第4章介绍DTML, 它是Zope中的基于标记符的脚本语言. 在这一章里, 我们描述了DTML在模板处理和编写脚本方面的用法, 以及它和其他Zope脚本的关系. 我们涵盖了DTML句法和3个基本的标记符:var. if和in. 当阅读完这一章以后, 你将能够创建动态Web页面.
第5章 创建基本Zope应用程序
第5章引领读者完成几个现实世界中的构建Zope应用程序的例子. 它提供了足够的例子来显示如何使用Zope对象和如何把它们结合在一起来形成基本应用程序.
第二部分 使用Zope创建Web应用程序
这几章对于高级Zope主题进行了更为深入的探讨. 它们包含了用Zope构建实际的Web应用程序所必需的内容.
第6章 用户和安全
第6章讲解Zope如何处理用户. 验证. 授权和其他与安全相关的事情. 安全对于Zope的设计来说是非常重要的, 并且对于你用Zope创建的Web应用程序也应该是非常重要的.
第7章 变量和高级DTML
第7章更为详细地探讨DTML. 它包含DTML安全和用DTML查找变量的灵活方法. 它还包含第3章所讲解的基本标记符的高级用法以及各种特殊用途的标记符. 这一章将使你成为一名DTML大师.
第8章 高级Zope脚木
第8章讲解用Python和Perl编写Zope脚本. 在这一章里, 我们讲述如何在 Zope里使用比DTML更为强大的工具编写业务逻辑(business logic). 它论述了Zope里的脚本思想, 并且集中在基于Python语言和Perl语言的脚本. 这一章显示了如何为你的站点添加非常强大的脚本.
第9章 内容搜索和分类
第9章介绍如何用Zope的内建搜索引擎——Catalog(目录册)处理索引和搜索对象. 它引入了索引的概念并且论述了索引和搜索的不同模式. 最后, 它论述了元数据和搜索结果. 这一章向你显示如何创建一个强大而易于使用的信息架构.
第10章 关系数据库连通
第10章描述Zope如何连接外部的关系数据库. 本章讲述了如何连接和查询数据库. 本章还讲述了各种特性, 这些特性允许你把关系数据当作Zope对象来对待. 最后, 这一章讲述了安全和性能问题.
第三部分 使用Zope开发高级Web应用程序
本书的最后一部分介绍高级主题. 你将学习如何升级你的Web应用程序和扩展Zope.
第11章 可升级能力和ZEO
第11章针对构建和维护大型的Web应用程序讲述相关内容和解决方法, 并且集中在管理和可升级能力方面. 特别是详细地讲述了Zope企业对象(ZEO). 这一章介绍了把一个小型站点变成能够给数百万的用户提供服务的大型站点所需的工具和技术.
第12章 扩展Zope
第12章讲述通过创建自己的对象类来扩展Zope. 本章讨论Zclass以及如何从类构建实例. 本章一步一步地描述了如何构建一个ZClass, 同时解决安全和设计问题. 最后, 论述为ZClass创建Python基础类, 同时描述Zope原有的基础类. 这一章向你显示如何通过定制Zope使你在更高层次上使用Zope.
附录
附录给你提供DTML和Zope API的参考.
附录A:DTML参考. 附录A涵盖所有的DTML标记符和它们的用法.
附录B:API参考. 附录B为最常见的Zope对象的编程接口提供参考.
附录C:Zope资源. 附录C提供一个实用的与Zope相关的Web站点的列表.
附录D:开放出版物许可. 附录D给出开放出版物许可的概要.
好了, 你应该已经为探索Zope做好了准备!