参考
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.
