57

我有几个小的(500 或 600 行模板代码)Django 站点,我想将它们迁移到使用 Jinja2……但我想知道它会做多少工作。那么,一般来说,将一个小型 Django 站点迁移到 Jinja2 需要多少工作量?它“值得”吗?

4

4 回答 4

53

虽然这只是我自己的经验,但我发现从 Django 转换到 Jinja2 是值得的,原因如下:

  1. 作为软件开发人员和模板设计师,Jinja2 的设计和实现对我来说似乎更直观;
  2. Jinja2 更具可扩展性(至少在我试图扩展模板引擎的方式上);
  3. Jinja2 在允许运行逻辑代码方面更加灵活(但它给了你足够的绳索来吊死自己);
  4. Jinja2 被认为明显更快(虽然我没有做过任何基准测试,但这总是会根据所使用的测试进行辩论,并且无论如何与必须进行数据库查找的查询的总等待时间基本上无关);
  5. Jinja2 提供了比 Django 更有用的错误输出(即跟踪模板中发生错误的行号)。 编辑:根据 Dor 的评论,Django 提供了有用的错误消息,指向问题的行和上下文,就像 Jinja2。

如果您对 Django 的模板引擎没有任何问题,那么 Jinja2 应该会感觉相对直观,如果可能更精致一些(或者至少对我来说确实如此)。同样,我发现这个Coffin项目写得很好,并且在从 Django 转换到 Jinja2 时很有帮助——既是为了它的使用,也是作为如何扩展 Jinja2 的示例。

话虽如此,Django 的模板引擎是可靠的,并且能够胜任大多数任务。我相信它会在 Django 的下一个版本中得到改进,并且有很多专门的开发人员付出了很多努力来增加它的功能。因此,无需担心它在近期到中期的未来会变得不受支持。

同样,这只是我的经验,因为它的价值——我希望这会有所帮助。

于 2010-12-04T05:04:40.413 回答
4

还有 django-jinja。https://github.com/niwibe/django-jinja

新的和不错的项目。http://niwinz.github.io/django-jinja/latest/

它声称是与 Django 的简单且无阻碍的 jinja2 集成。

于 2014-05-25T22:28:41.480 回答
3

从您所说的来看,迁移到 Jinja2 可能不值得。Django 模板中有过滤器可以帮助您进行任何数学运算。

关于列表操作,您到底在说什么?如果您希望模板中支持某些特定的列表操作,请编写自定义过滤器

Django也有一些现有的 3rd 方数学过滤器

如果您考虑一下,Django 模板中没有太多“编程结构”是设计使然。HTML模板应该是这样...

于 2010-12-02T18:34:50.813 回答
2

两个项目试图通过简单的集成步骤将 Jinja 集成到 Django 中,并很好地与 Django 挂钩 -

  1. 棺材
  2. 丑娃

我将立即将它们集成以试验它们是否也可以与 Django Admin 等 Django contrib 应用程序一起使用。但我觉得,它将可用于项目应用程序,Django 默认模板系统将用于 Admin 等内部应用程序。

于 2012-04-12T10:00:10.580 回答