如何在jinja2中使用第三方应用templatetags?

2024-06-17 12:22:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

现在,即使在模板标记的创建中必须有所改变,那么如何才能在第三方应用程序中反映呢?在

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

(我还使用coffin作为jinjadjango的适配器)。在


Tags: django标记引擎模板应用程序jinja2官方网站
3条回答

你可以用棺材做这个。Coffin提供了一种注册django样式标记的方法,以便在jinja2模板中使用:

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

register.tag('djangoTagIWantToUse', djangoTagIWantToUse)

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

如果您想使用jinja2,请使用一个带有可插入模板引擎的框架,或者没有模板引擎的框架。在

integration page列出了Jinja2附带的现成集成。在这个页面上,您可以看到Pyramid是受支持的,这是因为bydesign金字塔允许插入组件。在

^{}(由Jinja2背后的同一个人制作)对Jinja2有本地支持。在

根据coffin docs,您必须将任何自定义django模板标记重写为自定义Jinja2扩展名。在

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

我使用Jinja2模板有一段时间了,从来没有必要创建自定义模板标记。在

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

相关问题 更多 >