10

我正在为我的 Django 网站尝试 Jinja2。

现在,由于 Jinja2 不是官方的 Django 模板引擎,它拒绝识别/加载我在 Jjinja2 之前使用的模板标签。

现在,即使模板标签的创建必须发生变化,那么如何才能在 3rd 方应用程序中反映出来呢?

在这种情况下,似乎不可能使用 Jinja2,因为系统必须按照 Jinja2 工作。

(我也coffin用作 Jinja-Django 的适配器)。

4

3 回答 3

1

你可以用棺材做到这一点。Coffin 提供了一种方法来注册 django 风格的标签以在 jinja2 模板中使用:

from coffin import template
from ThrdPartyDjangoLib import djangoTagIWantToUse
register = template.Library()

register.tag('djangoTagIWantToUse', djangoTagIWantToUse)
于 2012-06-11T11:50:00.630 回答
1

根据棺材文档,您必须将任何自定义 django 模板标签重写为自定义 Jinja2 扩展。

您还可以使用 jinja2 宏功能来模拟 Django 的模板标签。最显着的区别是,对于 Jinja2 宏,必须通过模板上下文提供所有上下文数据,而在 Django 标签中,您可以使用其他方式访问数据(例如从数据库加载或调用其他 Python 库)。

我使用 Jinja2 模板已经有一段时间了,从来不需要创建自定义模板标签。

可以在站点的一个应用程序中使用 django 模板,而在另一个应用程序中使用 jinja2,这不是问题,但不容易从 django 模板导入或扩展 jinja2 模板,反之亦然。

于 2012-06-11T22:54:55.983 回答
0

Django 的结构不允许交换模板引擎,因为它是系统的核心部分。即使您可以使用coffin,它也不是受支持的配置,也不能指望第三方模块支持它。这与要求第三方模块支持是一样的,sqlalchemy因为您找到了一种让 django 使用它的方法。

如果您想使用 jinja2,请使用设计有可插入模板引擎的框架 - 或不带模板引擎的框架。

集成页面列出了 Jinja2 附带的开箱即用的集成。在该页面上,您可以看到它Pyramid是受支持的——这是因为金字塔的设计允许可插拔组件。

Flask(由后面的同一个人制作Jinja2)对 Jinja2 有原生支持。

于 2012-06-11T06:37:00.910 回答