参考
Cheetah 简介
简单使用
更多功能
#for

参考

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

Cheetah 简介

Cheetah /ˈtʃiːtə; `tʃitə/ n African wild animal of the cat family with black spots and long legs, and able to run very fast 猎豹(产于非洲, 有黑色斑点, 腿长善跑).

简单使用

#!/usr/bin/python

from Cheetah.Template import Template
#from DummyObjects import dummyUser, dummyOrder
dummyUser={'firstName':'Jian','lastName':'Lee'}
dummyOrder={'id':2}
definition = """Hello, $user.firstName.
Your order (#$order.id) has shipped:"""
print Template(definition, searchList=[{'user' : dummyUser,
                                        'order' : dummyOrder}])
# python cheetah-1.py
Hello, Jian.
Your order (#2) has shipped:

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

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

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

更多功能

#for

#!/usr/bin/python

from Cheetah.Template import Template
#from DummyObjects import dummyUser, dummyOrder
dummyUser={'firstName':'Jian','lastName':'Lee'}
dummyOrder={'id':2,
            'purchased':{'name':'purchased-name', 'summary':'test'},
            'trackingNumber':15430}

definition = """Hello, $user.firstName.
Your order (#$order.id) has shipped:
#for $item1, $item2 in $order.purchased.items():
 $item1: $item2 unit(s)
#end for
Your tracking number is $order.trackingNumber."""
print Template(definition, searchList=[{'user' : dummyUser,
                                        'order' : dummyOrder}])
# python cheetah-2.py
Hello, Jian.
Your order (#2) has shipped:
 name: purchased-name unit(s)
 summary: test unit(s)
Your tracking number is 15430.