何时在Python中使用模板引擎?

sol*_*rce 5 python templates template-engine

作为Python的"新手",主要有编写脚本以自动执行系统管理相关任务的背景,我对使用某些工具的位置没有多少意义.

但我对开发使用特定工具/技术的本能非常感兴趣.

我已经看到很多关于模板引擎的提及,包括zedshaw谈论在Lamson中使用Jinja2

所以我想我会请社区向我提供一些建议,告诉我何时/何时可能知道我应该考虑使用模板引擎,例如Jinja2,Genshi,Mako和co.

Ale*_*lli 8

正如@mikem所说,模板有助于在适当的条件下生成您喜欢的任何形式的输出.基本上我在Python中编写的第一个有意义的东西是模板系统 - YAPTU,用于又一个Python模板实用程序 - 这是8年多以前,在其他好的系统存在之前......我很荣幸让它在Peter Norvig(见这里)上得到增强,现在它在搜索引擎上运行了近2000次点击;-).

今天的模板引擎在很多方面都要好得多(尽管大多数都非常专业,特别是对于HTML输出),但基本思想仍然存在 - 为什么print在Python代码中使用大量语句和硬编码字符串时会更加容易在可编辑的模板文件中输出字符串?如果你想(例如)有能力输出法语,英语或意大利语(这是YAPTU在一个激烈的黑客周末期间的原始动机,因为我第一次熟悉Python ......! - ),能够从正确的目录(文本被适当翻译)获取模板将使一切变得更容易!

从本质上讲,每当你输出文本内容时,我认为模板系统更可能不是一个好主意.我已经使用YAPTU或其改编来平滑地在JSON,XML和人类可读(HTML,实际)输出之间切换,例如; 一个非常好的模板系统,在这个时代,实际上应该能够超越"text-ish"限制并以protobuf或其他二进制序列化格式输出.

哪个模板系统最好完全取决于你的具体情况 - 无论如何,在你的鞋子里,我会研究(并试验)其中的一些.有些设计用于UI设计者(无法编程)应该编辑它们的情况,其他用于程序员使用的情况; 许多专门针对HTML,一些针对XML,另一些针对XML; 等等,但其中一个(或你自己的又一个! - )肯定比一堆prints好! - )