django-templates jinja2入门 - Django:切换到Jinja2?




jinja库 for循环 (5)

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

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

如果你对Django的模板引擎没有任何麻烦,那么Jinja2应该感觉相对直观,如果可能更加精致(或者它对我来说无论如何)。 同时,我发现Coffin项目编写得很好,并且在从Django转换为Jinja2时非常有用 - 两者都是为了它的使用,以及如何扩展Jinja2的一个例子。

尽管如此,Django的模板引擎非常可靠,能够胜任大多数任务。 我相信它在Django的下一个版本中得到了改进,并且有相当多的努力要由相当多的专门开发人员添加其功能。 因此,不用担心它在近中期未来会得不到支持。

再一次,这只是我的经验,值得的 - 我希望这对你有所帮助。

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


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

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

Django还有一些现有的第三方数学过滤器

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



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

  1. Coffin
  2. Chouwa

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


在参数末尾添加迁移名称:

./manage.py migrate app-name 00xx-migration-name




django django-templates jinja2