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

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

 2007-03-29 12:19:25 来源:WEB开发网   
核心提示: from Cheetah.Template import Templatefrom DummyObjects import dummyUser, dummyOrderdefinition = """Hello, $user.firstName.Your ord
from Cheetah.Template import Template
from DummyObjects import dummyUser, dummyOrder
definition = """Hello, $user.firstName.
Your order (#$order.id) has shipped:"""
print Template(definition, searchList=[{'user' : dummyUser,
                    'order' : dummyOrder}])

definition 字符串包含模板定义(电子邮件的静态部分),它可以对外部变量(动态部分)进行引用。Template 构造函数在这里用来将模板定义绑定到名称空间 的 searchList:查找对象的方式对应于定义中使用的变量。例如,模板定义中的 $user 在这里映射到 dummyUser 变量。您还可以提前运行 Template 构造函数,并在准备使用特定对象解释模板的时候设置其 searchList 成员。

您应该已经看到 Cheetah 胜过 Python 的内置模板系统的一些优点。消息的动态部分(dummyUser 和 dummyOrder 对象)只是模板定义中不作考虑的事项。其他所有事项,包括要访问的对象成员,都不能在消息之间进行更改,因此都纳入到模板定义中。

假设您需要更改电子邮件模板,以便打印用户的全名,而不是用户的名字。假定 dummyUser 对象已经提供了该信息(例如,带有一个 getFullName() 方法或一个 fullname 成员),您可以通过更改模板定义单独进行此更改。而在使用内置 Python 模板系统时,则必须更改 Python 代码。

将模板定义编译成 Python 类

在将模板定义转变成一个 Template 对象时,会发生什么?Cheetah 生成了一个定制 Python 类,该类实现代码来合并模板定义和动态数据。通过将模板定义保存为一个文件并在其上运行 cheetah compile 命令,您可以自行观察这一点。以下是 Greeting.tmpl,它是包含前面所使用的相同 Cheetah 模板的一个模板文件:

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

Tags:使用 Python Cheetah

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