簡體   English   中英

Django:如何使用Jinja 2的第三方app模板標簽?

[英]Django : How to use 3rd party app templatetags with Jinja 2?

我正在為我的django網站嘗試Jinja2

現在,由於Jinja2不是官方django templating engine並且拒絕識別/加載我在jinja2之前使用的模板標簽。

現在,即使創建模板標簽時必須進行更改,那么如何反映第三方應用程序呢?

在這種情況下,似乎不可能使用Jinja2,因為系統必須按照jinja2工作。

[我也使用coffin作為Jinja-Django的適配器]

任何幫助表示贊賞!

你可以用棺材做到這一點。 Coffin提供了一種注冊django風格標簽的方法,以便在jinja2模板中使用:

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

register.tag('djangoTagIWantToUse', djangoTagIWantToUse)

根據棺材文檔,您將不得不將任何自定義django模板標記重寫為自定義Jinja2擴展。

您還可以使用jinja2宏功能來模擬Django的模板標簽。 最顯着的區別是,對於Jinja2宏,有必要通過模板上下文提供所有上下文數據,而在Django標簽中,您可以使用其他方式訪問數據(例如從數據庫加載或調用其他Python庫)。

我一直在使用Jinja2模板,從來沒有必要創建自定義模板標簽。

可以在網站上的一個應用程序中使用django模板,在另一個應用程序中使用jinja2,這不是問題,但是不容易從django模板導入或擴展jinja2模板,反之亦然。

Django的結構不允許交換模板引擎,因為它是系統的核心部分。 即使您可以使用coffin ,它也不是受支持的配置,並且不能期望第三方模塊支持它。 這與詢問第三方模塊支持sqlalchemy是一樣的,因為你找到了讓django使用它的方法。

如果你想使用jinja2,請使用一個設計有可插拔模板引擎的框架 - 或者沒有模板引擎的框架。

集成頁面列出了Jinja2附帶的開箱即用集成。 在該頁面上,您可以看到支持Pyramid - 這是因為設計金字塔允許可插入組件。

Flask (由Jinja2背后的同一個人制作)對Jinja2有原生支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM