最好的Python模板库,方便代码生成

时间:2009-03-04 22:38:52

标签: python templates code-generation

而不是我花费第二天(或一年)阅读所有这些内容,有没有关于模板引擎的建议,我应该更详细地研究一下?

7 个答案:

答案 0 :(得分:29)

最佳建议:全部尝试。不会花很长时间。

我的最爱:Jinja2(一英里)

它具有良好的语法,可以通过它跟踪错误,并且是可沙箱的。

答案 1 :(得分:16)

如果您正在进行代码生成,您可能会发现Cog非常有用 - 它专门用于代码生成,而不是通常适用的模板语言。

答案 2 :(得分:10)

最重要的问题是您是否可以使用模板所需的语法。第二和第三(取决于您的应用需求)将是速度和易于分发。

我查看了所有这些内容,但我能说的唯一语法是Jinja。 Jinja具有支持大量Python构造的优势,因此可以根据需要向模板添加功能片段,而无需编写特殊标记。大多数需要其他模板系统中的标签的内容都由Jinja的宏处理。

当然,如果您正在寻找简单快捷的内容,那么很难超越核心语言中的Python templating API

答案 3 :(得分:2)

更新:孩子似乎已由Genshi继承。

我使用过Kid,这是我认为较旧的系统之一。我发现它非常坚固,稳定可靠。它是基于标签的,所以使用XML / HTML很好。有趣的是模板函数是作为HTML属性完成的,而不是特殊的块,即{%...%}。然而,某些方面(特别是它'包括'的方式)可能会变得非常令人厌烦。它似乎也没有积极发展或根本没有发展。

值得一看,如果你想要的东西已经存在了一段时间并且变得非常稳定。如果你想要更新的东西,我听说过关于Genshi和Jinja的好东西。

答案 4 :(得分:1)

我喜欢Clearsilver,因为它适用于多种不同的语言,并严格执行数据和演示之间的分离。我之前使用的是Cheetah,虽然它非常好,但我不喜欢使用有时看似有限形式的Python的东西。

答案 5 :(得分:1)

如果您正在使用X [HT] ML,那么基于标签的模板系统之一可以为您提供格式良好的模板,这是一个很好的举措。我使用PXTL,FWIW。 (它可以产生其他格式,但如果你的重点不是XML或HTML,它就不是一个明智的选择。)

我对模板系统非常不喜欢,他们声称“通过将表达限制在他们自己的小语言中来帮助你分离业务逻辑和演示”。他们似乎并不理解存在诸如“表示逻辑”之类的东西,并且它有时会变得足够复杂,需要像Python这样的真实语言才能运行它。使用业务逻辑将您的演示逻辑踢出到应用程序所以不是胜利。避免!

(有限的表达式单独的迷你语言方法在JSP的'EL'中有一定意义,因为Java在模板库中使用起来太烦人了。但是我们有Python!它非常适合在模板中编写表达式是;切断功能并让用户学习另一种新语言,一无所获。)

答案 6 :(得分:1)

如果您想要非常轻量级的选项,请尝试使用模板。它只有单个模块中的80行代码。看看herehere(它已在博客中发布)。如果功能足够你,我认为这是一个聪明且非常集中的解决方案。