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

时间:2009-06-23 04:29:35

标签: python templates template-engine

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

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

我见过很多关于模板引擎的内容,包括zedshawLamson中讨论使用Jinja2

所以我想我会请社区向我提供一些建议,告诉我何时/何时可能知道我应该考虑使用模板引擎,例如Jinja2Genshi,{{3和},和。

3 个答案:

答案 0 :(得分:7)

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

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

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

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

答案 1 :(得分:2)

模板引擎处理模板以编程方式生成工件。模板指定工件的骨架,程序填充空白。这可以用来生成几乎任何东西,无论是HTML,某种脚本(即:RPM SPEC文件),可以在以后执行的Python代码等等。

答案 2 :(得分:0)

简而言之,模板化可让您轻松手动编写人类可读文档,并添加非常简单的标记,以识别应由变量替换的区域,应重复的区域等。

通常,模板语言只能执行基本的“模板逻辑”,这意味着只有足够的逻辑来影响文档的布局,但不足以影响提供给模板以填充文档的数据。