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

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

 2007-03-29 12:19:25 来源:WEB开发网   
核心提示: 清单 8. 使用 #if 指令处理复数Hello, $user.firstName.Your order (#$order.id) has shipped:#for $purchased, $quantity in $order.purchased.items():$purchased.n

清单 8. 使用 #if 指令处理复数

Hello, $user.firstName.
Your order (#$order.id) has shipped:
#for $purchased, $quantity in $order.purchased.items():
$purchased.name: $quantity unit
#if $quantity != 1
s
#end if
#end for

使用这个模板定义的惟一问题是,Cheetah 在单位 中的一个单独行上打印 s:

Widget, green: 50 unit
s
Widget, blue: 1 unit

可以用两种方法避免这种尴尬的现象:禁止这种令人讨厌的新行,或者提前设置适当的字符串作为变量。

使用 #slurp 指令禁止出现这种新行

Cheetah 的指令 #slurp 告诉 Cheetah 不要在特殊行的结尾处打印新行:

清单 9. 禁止在行的结尾处出现新行

#for $purchased, $quantity in $order.purchased.items():
$purchased.name: $quantity unit#slurp
#if $quantity != 1
s
#end if
#end for

此代码提供了您想要的输出:

Widget, green: 50 units
Widget, blue: 1 unit

使用 #set 指令设置变量

如果 #slurp 指令对您来说不好用,那么可以使用另一种方法。可以使用 #set 指令在 Cheetah 模板的作用域内创建一个临时变量:

清单 10. 使用 #set 创建一个临时变量

#for $purchased, $quantity in $order.purchased.items():
#if $quantity == 1
 #set $units = 'unit'
#else
 #set $units = 'units'
#end if
$purchased.name: $quantity $units
#end for

在这种情况下,#set 允许您将条件从文本生成中移出,移动到定义变量的代码中。#set 通常是一个有用的指令。您还可以使用它来创建中间值,或者用它来避免多次调用某一昂贵的方法。

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

Tags:使用 Python Cheetah

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