[英]Comparing web.py's Templator and Jinja2: strengths and weaknesses
我正在向已经存在的软件中添加一个简单的Web界面; web.py非常适合此工作,这就是我正在使用的。 现在,我正在研究使用哪种模板引擎,并归结为两种选择:使用web.py自己的模板或使用Jinja2。
我已经在应用程序中都工作过,并且都在编写一些非常简单的模板来探索它们。 我必须说,我觉得Templator更容易阅读,这可能是由于我是一名程序员而不是一名Web设计师(谁可能会觉得Jinja更容易?)。
虽然我现在仅生成(不合规;)丑陋的HTML页面,但我还将使用模板引擎来生成电子邮件和良好的旧纯文本文件。
两种软件对于任何实际目的都是“足够快”的,我想问一问广泛使用一种或两种软件的人,它们在易用性,代码整洁度,灵活性等方面的优缺点是什么? 。
快速浏览一下Templator (我从未使用过)并将其与Jinja2 (我已经广泛使用过)进行比较,我想说两者非常相似...但是Templator更类似于Mako而不是Jinja 。
Mako和Jinja都支持:
虽然Mako和Templator都支持:
所有三种支持:
模板支持我不相信Jinja或Mako会做的奇怪事情:
Jinja接受了模板代码并将其编译为Python字节码,但是它对所有内容都做到了这一点,而不是将字符串传递给Python解释器以使用safe_eval
。 通过这样做,Jinja2在理论上不受模板级别上某些类型的攻击的影响(但是,当您从模板中获取敌意输入时,通常会遇到更大的问题)。
至于其余部分,这完全取决于您对语法的偏好。
在Templetor中,对我而言最困难的是模板继承。 代替例如Jinja2中存在的简单块概念,您必须在应用程序代码中选择一次基本模板,然后在实际模板中进行奇怪的属性设置,同时在基本模板中访问它。 如果您需要多个像页面正文这样的“大”块,仍然会遇到问题。
真实的块更加优雅,并且Templetor的“真实” Python的灵活性并不是必需的,尽管它可能是不安全的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.