2024-06-17 12:22:38 发布
网友
我正在为我的Django网站尝试Jinja2。在
现在,由于Jinja2不是官方的Django模板引擎,它拒绝识别/加载我在Jjinja2之前使用的模板标记。在
现在,即使在模板标记的创建中必须有所改变,那么如何才能在第三方应用程序中反映呢?在
在这种情况下,似乎不可能使用Jinja2,因为系统必须按照Jinja2工作。在
(我还使用coffin作为jinjadjango的适配器)。在
coffin
你可以用棺材做这个。Coffin提供了一种注册django样式标记的方法,以便在jinja2模板中使用:
from coffin import template from ThrdPartyDjangoLib import djangoTagIWantToUse register = template.Library() register.tag('djangoTagIWantToUse', djangoTagIWantToUse)
Django的结构不允许交换模板引擎,因为它是系统的核心部分。即使您可以使用coffin,它也不是一个受支持的配置,也不可能期望任何第三方模块支持它。这与要求第三方模块支持sqlalchemy是一样的,因为您找到了让django使用它的方法。在
sqlalchemy
如果您想使用jinja2,请使用一个带有可插入模板引擎的框架,或者没有模板引擎的框架。在
integration page列出了Jinja2附带的现成集成。在这个页面上,您可以看到Pyramid是受支持的,这是因为bydesign金字塔允许插入组件。在
Pyramid
^{}(由Jinja2背后的同一个人制作)对Jinja2有本地支持。在
Jinja2
根据coffin docs,您必须将任何自定义django模板标记重写为自定义Jinja2扩展名。在
您还可以使用jinja2宏特性来模拟Django的模板标记。最显著的区别是,对于Jinja2宏,必须通过模板上下文提供所有上下文数据,而在Django标记中,您可以使用其他方式(如从数据库加载或调用其他Python库)访问数据。在
我使用Jinja2模板有一段时间了,从来没有必要创建自定义模板标记。在
可以在网站上的一个应用程序中使用django模板,在另一个应用程序中使用jinja2模板,这不是一个问题,但是从django模板导入或扩展jinja2模板并不容易,反之亦然。在
你可以用棺材做这个。Coffin提供了一种注册django样式标记的方法,以便在jinja2模板中使用:
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模板并不容易,反之亦然。在
相关问题 更多 >
编程相关推荐