WEB开发网
开发学院软件开发Python 使用 Python 和 Cheetah 构建和扩充模板 阅读

使用 Python 和 Cheetah 构建和扩充模板

 2007-03-29 12:19:25 来源:WEB开发网   
核心提示: 这些模板系统都有两个重要的缺点,它们的模板定义都不能调用任何方法,使用 Python 和 Cheetah 构建和扩充模板(4),或者访问 dummyUser 和 dummyOrder 对象的任何成员,不能将 dummyUser.firstName 放入模板定义中,为 Cheetah 模板提

这些模板系统都有两个重要的缺点。

它们的模板定义都不能调用任何方法,或者访问 dummyUser 和 dummyOrder 对象的任何成员。不能将 dummyUser.firstName 放入模板定义中,必须将它放入应用于模板定义的映射中。所有将插入静态模板定义中的动态信息都必须首先拆分为基本的 Python 数据类型。

这些模板系统没有流控制 —— 没有循环或条件。以前的那些例子恰好在必须按顺序在项上进行迭代之前停止执行,并且有一个好的理由:它们使用的模板系统无法在模板定义内部进行这种迭代。您需要编写 Python 代码在这些项上按顺序进行迭代,将多个字符串连接在一起(可能使用中间模板),并以称为 itemsOrdered 的单个字符串的形式向模板系统提供最终结果。循环本身是电子邮件主体的静态部分的一部分 —— 无论处理什么样的用户和定单,其工作方式是相同的 —— 但无法将它应用到静态模板定义中。

多数可用于 Python 的附加模板系统试图弥补这两个缺点。其中最好的替代是 Cheetah。

Cheetah 简介

Cheetah 有一个很长的家谱。它从称为 Velocity 的 Java™ 模板系统那里获得了灵感,Velocity 是 Webmacro 模板系统的一个改进版本,试图在 JavaServer Pages 上进行改进。Cheetah 提供了一门简单语言,用来定义提供基本流控制和对象访问构造的模板。它借用了 Velocity 的基本模板语法,但添加了一些特性,为 Cheetah 模板提供对 Python 的便利构造的访问。

以下是一些 Cheetah 代码,这些代码解释了模板定义的“简单”部分 —— 没有流控制的那一部分,Python 的内置模板系统可以处理它:

清单 6. 第一个 Cheetah 示例

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:使用 Python Cheetah

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接