使用 Python 和 Cheetah 构建和扩充模板
2007-03-29 12:19:25 来源:WEB开发网核心提示: 不幸的是,这个代码不像它的输出那样好,使用 Python 和 Cheetah 构建和扩充模板(3),通过查看此代码,难以看出电子邮件消息的结构,Python 一直拥有一些简单的模板系统,它们有一些易于让人理解的格式,许多代码是重复的(例如,有许多对列表的 append() 方法的调用)
不幸的是,这个代码不像它的输出那样好。通过查看此代码,难以看出电子邮件消息的结构。许多代码是重复的(例如,有许多对列表的 append() 方法的调用),这为错误创造了空间。最后,团队的 UI 设计人员可能宁愿编辑类似上面描述的抽象模板那样的东西,也不愿意编辑这种 Python 代码。由于上述这些原因,开发人员转向模板系统。
有 Python 的内置模板系统就足够了吗?
Python 提供了少许内置模板系统,它们在简单情况下工作得很好。很长时间以来,Python 一直拥有一些简单的模板系统,它们有一些易于让人理解的格式,这些格式令人回想起 C 的 printf() 字符串格式:
清单 4. Python 的内置模板系统
from DummyObjects import dummyUser, dummyOrder
print 'Hello, %s.
Your order (#%d) has shipped:' % (dummyUser.firstName,
dummyOrder.id)
print 'Hello, %(firstName)s.
Your order (#%(orderID)d) has shipped:' %
{'firstName' : dummyUser.firstName, 'orderID' : dummyOrder.id}
Python V2.4 引入了一个具有看起来更现代的格式的模板系统。变量名称是通过添加美元符号($)作为前缀来指定的;这类似于 Perl、PHP、大多数 shell 语言和 Cheetah:
清单 5. Python V2.4 的内置模板系统
from string import Template
from DummyObjects import dummyUser, dummyOrder
t = Template('Hello, $firstName.
Your order (#$orderID) has shipped:')
t.substitute({'firstName' : dummyUser.firstName, 'orderID' : dummyOrder.id})
更多精彩
赞助商链接