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

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

 2007-03-29 12:19:25 来源:WEB开发网   
核心提示: Hello, $user.firstName.Your order (#$order.id) has shipped:在这个文件上运行 cheetah compile Greeting.tmpl 将生成一个称为 Greeting.py 的模块,这个类包含一个称为 Greeting 的类,使
Hello, $user.firstName.
Your order (#$order.id) has shipped:

在这个文件上运行 cheetah compile Greeting.tmpl 将生成一个称为 Greeting.py 的模块。这个类包含一个称为 Greeting 的类,后者实现的代码非常类似于文章开始部分手工编写的代码:

手工代码

l.append('Hello, ')
l.append(
 
dummyUser.firstName)
l.append('. Your
 
order (#')
l.append(str(
 
dummyOrder.id))
l.append(') has
 
shipped: ')
Cheetah 生成的代码

write('Hello, ')
write(filter(VFFSL(SL,
 
"user.firstName",
 
True), rawExpr=
 
'$user.firstName'))
write('. Your
 
order (#')
write(filter(VFFSL(SL,
 
"order.id",True),
 
rawExpr=
 
'$order.id'))
write(') has
 
shipped:')

然后,您可以在 Python 中使用生成的 Greeting 类,就像您已经使用 Greeting.tmpl 的内容定义了一个通用 Template 一样:

from Greeting import Greeting
print Greeting(searchList=[{'user' : dummyUser, 'order' : dummyOrder}])

因为 Cheetah 可以将模板文件编译成 Python 代码,所以您可以预先解析所有模板,并在使用动态数据扩充代码时,从已编译的代码中获得好处。

流控制:#for 指令

在生成示例模板的第一部分时,Cheetah 比 Python 的内置模板系统更好用。它还处理模板的其余部分,而这些部分是内置系统根本无法处理的。除了变量引用之外,Cheetah 模板定义还包含针对 Cheetah 解释器的指令,其中包括设置循环的 #for 指令:

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

Tags:使用 Python Cheetah

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