Python中的cheetah模板
程序员文章站
2023-12-23 22:54:34
cheetah简介
cheetah提供了一门简单语言,用来定义提供基本流控制和对象访问构造的模板。它借用了velocity的基本模板语法,但是添加了一些特性,为cheetah模...
cheetah简介
cheetah提供了一门简单语言,用来定义提供基本流控制和对象访问构造的模板。它借用了velocity的基本模板语法,但是添加了一些特性,为cheetah模板提供对python的便利构造了访问。
from cheetah.template import template dummyuser={'firstname':'harvey','lastname':'liu'} dummyorder={'id':2} definition = """hello, $user.firstname. your number is $order.id.""" definition_new = template(definition, searchlist=[{'user' : dummyuser,'order' : dummyorder}])
definition字符串包含模板定义,它可以对外部变量(动态部分)进行引用。template构造函数在这里用来将模板定义绑定到名称空间的searchlist:查找对象的方式对应于定义中使用的变量。例如,模板定义中的$user在这里映射到dummyuser变量。除此之外,可以提前运行template构造函数,并在准备使用特定对象解释模板的时候设置其searchlist成员。
假设需要更改模板,需要打印用户的全名,而不是用户的名字。假定dummyuser对象已经提供了该信息,则可以通过更改模板定义单独进行此更改。而在使用内置python模板时,则必须更改python代码。
流控制:#if指令
cheetah提供了一个#if指令,该指令允许设置if-then-else条件。
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打印结果为:
widget, green: 50 unit s widget, blue: 1 unit
推荐阅读
-
浅谈python numpy中nonzero()的用法
-
Yii2的相关学习记录,自定义gii模板和引用vendor中的js、css(四) - 漫游云巅
-
python中BackgroundScheduler和BlockingScheduler的区别
-
详解python中的 is 操作符
-
分析Python中设计模式之Decorator装饰器模式的要点
-
Python中运算符"=="和"is"的差别分析
-
用Python中的__slots__缓存资源以节省内存开销的方法
-
分享Python中list的各项操作技巧
-
在Python中处理字符串之isdecimal()方法的使用
-
关于python中的__init__与__new__以及__call__三个方法的简单介绍