我正在为现有的软件添加一个简单的Web界面; web.py恰到好处地适合这项工作,这正是我正在使用的。现在我正在研究使用什么模板引擎,并提出了两种选择:使用web.py自己的Templator或使用Jinja2。
我已经在应用程序中工作了,我正在编写一些非常简单的模板来探索它们。我必须说我觉得Templator更容易阅读,这可能是因为我是一名程序员而不是网页设计师(谁可能会更容易找到Jinja?)。
虽然我现在只生成(不符合;)丑陋的HTML页面,但我还会使用模板引擎来生成电子邮件和旧的纯文本文件。
对于任何实际目的而言,这两种软件都“足够快”,我想问一下在易用性,代码清洁度,灵活性方面,广泛使用其中一种或两种或两者的优点和缺点的人。等等。
答案 0 :(得分:4)
快速浏览Templator(我从未使用过)并将其与Jinja2(我已经广泛使用过)进行比较,我会说两者非常相似......但是,温度计更接近Mako而不是金贾。
Mako和Jinja都支持:
Mako和Templator都支持:
所有三项支持:
Templator支持奇怪的事情,我不相信Jinja或Mako:
Jinja获取模板代码并将它们编译为Python字节码,但它会为所有内容编写代码,而不是将字符串传递给Python解释器以使用safe_eval
。通过这样做,Jinja2在理论上对模板级别的某些类型的攻击免疫(但是当你从模板中获得恶意输入时,你通常会遇到更大的问题)。
至于其余部分,这完全取决于您对语法的偏好。
答案 1 :(得分:1)
Templetor对我来说最难的是模板继承。而不是存在的块的简单概念,例如在Jinja2中,您必须在应用程序代码中选择一次基本模板,然后在基本模板中访问实际模板时执行奇怪的属性设置。如果您需要多个“大”块(如页面主体),您仍然会遇到问题。
真正的块更加优雅,而且Templetor的“真正的”Python的灵活性并不是必需的,但它可能不安全。