我正在为我的django网站尝试Jinja2
。
现在,由于Jinja2
不是正式django templating engine
,并且拒绝识别/加载我在jinja2
之前使用的模板标记。
现在,即使模板标签的创建有变化,那么如何反映第三方应用呢?
在这种情况下,似乎不可能使用Jinja2,因为系统必须按照jinja2工作。
[我也使用coffin
作为Jinja-Django的适配器]
感谢任何帮助!
答案 0 :(得分:1)
你可以用棺材做到这一点。 Coffin提供了一种注册django风格标签的方法,以便在jinja2模板中使用:
from coffin import template
from ThrdPartyDjangoLib import djangoTagIWantToUse
register = template.Library()
register.tag('djangoTagIWantToUse', djangoTagIWantToUse)
答案 1 :(得分:1)
根据coffin docs,您必须将任何自定义django模板标记重写为自定义Jinja2扩展。
您还可以使用jinja2宏功能来模拟Django的模板标签。最显着的区别是,对于Jinja2宏,有必要通过模板上下文提供所有上下文数据,而在Django标签中,您可以使用其他方式访问数据(例如从数据库加载或调用其他Python库)。 p>
我一直在使用Jinja2模板,从来没有必要创建自定义模板标签。
可以在网站上的一个应用程序中使用django模板,在另一个应用程序中使用jinja2,这不是问题,但是不容易从django模板导入或扩展jinja2模板,反之亦然。
答案 2 :(得分:0)
Django的结构不允许交换模板引擎,因为它是系统的核心部分。即使您可以使用coffin
,它也不是受支持的配置,并且不期望第三方模块支持它。这与要求第三方模块支持sqlalchemy
是一样的,因为你找到了让django使用它的方法。
如果你想使用jinja2,请使用一个设计有可插拔模板引擎的框架 - 或者没有模板引擎的框架。
integration page列出了Jinja2附带的开箱即用集成。在该页面上,您可以看到支持Pyramid
- 这是因为按设计金字塔允许可插入组件。
Flask
(由Jinja2
后面的同一个人制作)原生支持Jinja2。