使用 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 通常是一个有用的指令。您还可以使用它来创建中间值,或者用它来避免多次调用某一昂贵的方法。
更多精彩
赞助商链接