Django:切换到Jinja2?

时间:2010-12-02 15:38:06

标签: django django-templates jinja2

我有两个小的(500或600行模板代码)Django网站,我想将它们迁移到使用Jinja2 ......但是我想知道它将会有多少工作。那么,一般来说,将一个小的Django站点迁移到Jinja2有多少工作?它是否“值得”?

4 个答案:

答案 0 :(得分:52)

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

  1. 作为软件开发人员和模板设计师,Jinja2的设计和实现对我来说似乎更直观;
  2. Jinja2更具可扩展性(至少在我试图扩展模板引擎的方式上);
  3. Jinja2在允许运行逻辑代码方面更灵活(但它给你足够的绳索让自己挂起);
  4. Jinja2被认为速度要快得多(虽然我没有做任何基准测试,根据所使用的测试,这总是存在争议,并且在任何情况下,在必须执行数据库的查询的总等待时间中基本上无关紧要查找);
  5. Jinja2提供了比Django更有用的错误输出(即跟踪模板中发生错误的行号)。 编辑:根据Dor的评论,Django提供有用的错误消息,指向问题的行和上下文,非常类似于Jinja2。
  6. 如果您对Django的模板引擎没有任何问题,那么Jinja2应该感觉相对直观,如果可能更加精致(或者它对我来说无论如何)。同时,我发现Coffin项目编写得很好,在从Django转换为Jinja2时也非常有用 - 两者都是为了它的使用,以及如何扩展Jinja2的例子。

    总而言之,Django的模板引擎非常强大,能够胜任大多数任务。我相信它在Django的下一版本中正在得到改进,并且有相当多的努力要由相当多的专门开发人员添加其功能。因此,不用担心它在近中期内会得不到支持。

    同样,这只是我的经验,值得的 - 我希望这会有所帮助。

答案 1 :(得分:4)

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

新的好项目。 http://niwibe.github.io/django-jinja/

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

答案 2 :(得分:2)

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

关于列表操作,你到底在说什么?如果您希望在模板中支持某些特定列表操作,请写入custom filter

还有一些现有的第三方math filters for Django

如果你考虑一下,那就是设计Django模板中没有太多的“编程结构”。 HTML模板应该是......

答案 3 :(得分:2)

两个试图将Djja中的Jinja与简单的集成步骤集成在一起并与Django很好地挂钩的项目 -

  1. Coffin
  2. Chouwa
  3. 我正在整合它们以进行实验,如果他们也使用Django支持应用程序,如Django Admin。但我觉得,它将适用于项目应用程序,Django默认模板系统将用于管理员等内部应用程序。