Jinja 是 Django 模板语言的超集吗?

问题描述 投票:0回答:2

根据项目文档,Jinja2 模板是“按照 Django 模板建模的 [原文如此]”。 我在其他地方读到 Django 模板可以与 Jinja2 互换使用。

所以,我想标题说明了一切:Jinja2 模板是 Django 原生模板的(严格)超集吗?

否则,它们有何不同? 如果差异很小,为什么不是 Jinja2 是 Django 原生模板的超集?

django django-templates jinja2
2个回答
16
投票

不,Jinja 并不是 Django 模板语言的严格超集。 Jinja 文档中给出了对差异的很好的总结。

Jinja 成为 DTL 的超集并没有什么特别的原因。它是一个独立的包,可供任何 Python Web 框架使用。我想说,大部分差异是由于 Jinja 试图比 DTL 限制更少、更具 Python 风格。例如,虽然 Jinja 过滤器语法使用常用的函数调用括号,但 DTL 使用

|
:
的组合。 (DTL 随着时间的推移慢慢发生了变化,并且比以前更加 Pythonic 了。)

Jinja 得到了 Django 的官方支持,甚至在此之前就有第三方包允许你使用它。唯一真正的兼容性问题是您无法在 Jinja 模板中使用 Django 的“自定义模板标签”。如果您使用 Jinja 作为模板语言,但想要使用提供自定义模板标签功能的第三方包,则可能会出现这种情况。


7
投票

大多数语法元素的外观和工作方式都是相同的。


Django 模板中的示例:

{% for page in user.get_created_pages %}<br/> <br/> {% endfor %}

在金贾将会是这样:

{% for page in user.get_created_pages() %}<br/> <br/> {% endfor %}

	
© www.soinside.com 2019 - 2024. All rights reserved.