gpt4 book ai didi

python - 比较 web.py 的 Templator 和 Jinja2 : strengths and weaknesses

转载 作者:太空宇宙 更新时间:2023-11-04 09:17:30 26 4
gpt4 key购买 nike

我正在为现有的软件添加一个简单的网络界面; web.py 正好适合这项工作,这就是我正在使用的。现在我正在研究使用什么模板引擎并归结为两种选择:使用 web.py 自己的 Templator 或使用 Jinja2。

我已经在应用程序中使用了这两种方法,并且我正在为这两种方法编写一些非常简单的模板来探索它们。我必须说我发现 Templator 更容易阅读,这可能是因为我是一名程序员而不是网页设计师(谁可能会发现 Jinja 更容易阅读?)。

虽然我现在只生成(不合规;)丑陋的 HTML 页面,但我还将使用模板引擎生成电子邮件和良好的旧纯文本文件。

这两种软件对于任何实际用途都“足够快”,我想问问广泛使用其中一种或两种软件的人,他们在易用性、代码整洁度、灵 active 方面的优缺点是什么,等等。

最佳答案

快速浏览 Templator (我从未使用过)并将其与 Jinja2 进行比较(我已经广泛使用了),我会说两者非常相似......但 Templator 更接近于 Mako而不是 Jinja。

Mako 和 Jinja 都支持:

  • 模板继承(您可以拥有所有页面都继承的布局)
  • 空格控制

虽然 Mako 和 Templator 都支持:

  • 在您的模板中嵌入“安全的”Python。

所有三个支持:

  • 添加到模板上下文(函数、对象、变量、作品)
  • 定义函数以在您的模板中封装可重复使用的功能片段(Jinja 称它们为“宏”。)
  • 条件和循环
  • 设置和获取局部变量。
  • 表达评估
  • 缓存编译后的字节码以加速 future 的执行。

Templator 支持我认为 Jinja 或 Mako 都不会做的奇怪事情:

  • 在模板代码中设置已编译模板对象的属性。 (坦率地说,实际上使用该功能似乎是错误的做法。您的模板可以确定需要根据上下文传入的内容设置的任何标志都应该已经设置了您的申请代码。)

Jinja 获取模板代码并将它们编译为 Python 字节码,但它对所有内容都这样做,而不是将字符串传递给 Python 解释器以使用 safe_eval。通过这样做,Jinja2 理论上可以免受模板级别的某些类型的攻击(但是当您从模板中获得恶意输入时,您通常会遇到更大的问题)。

至于其余部分,这完全取决于您对语法的偏好。

关于python - 比较 web.py 的 Templator 和 Jinja2 : strengths and weaknesses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7244683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com