2009-06-23 54 views
4

作为Python的“新手”,主要是编写用于自动化系统管理相关任务的脚本的背景,对于何处使用某些工具,我没有太多意义。何时在Python中使用模板引擎?

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

我已经看到了关于模板引擎提到了很多,包括zedshaw谈论Lamson

因此,使用Jinja2的我想我会问社会为我提供一些建议,以在那里/我可能知道我应考虑使用模板引擎,如Jinja2,Genshi,Mako和co。

回答

6

正如@mikem所言,模板可以帮助生成任何形式在合适的条件下,你喜欢的输出。本质上,我在Python中写的第一件有意义的事情是一个模板系统 - YAPTU,用于另一个Python模板工具 - 那是8年多前,其他这样的系统存在......在我有了荣誉不亚于Peter Norvig(见here),现在它在搜索引擎上运行了近2000次点击;-)。 (尽管大多数都是非常专业化的,尤其是HTML输出),但其基本思想仍然存在 - 为什么还要在Python代码中使用大量的print语句和硬编码的字符串,何时更容易将可编辑模板文件中的字符串提取出来?如果你想要(例如)能够用法语,英语或意大利语输出(这是YAPTU在黑客攻击周末的初始动机,因为我第一次熟悉Python ......)能够从正确的目录(文本被正确翻译的地方)获取模板将使一切变得如此简单!

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

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

+0

优秀和有益的答案。我想我会更好地了解何时可以“碰撞”到应该使用模板引擎的情况。 – solarce 2009-06-23 16:12:49

2

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

0

简而言之,模板可以让你轻松地编写一个人类可读的文件并添加非常简单的标记来识别应该被变量替代的区域,应该重复的区域等。

通常,模板语言只能做基本的“模板逻辑”,意思就是足以影响布局的逻辑文档,但不足以影响提供给模板以填充文档的数据。