我想在不重新啓動應用程序的情況下在django應用程序中切換Jinja2模板。如何強制Jinja2模板重新編譯?
有沒有人這樣做?基本上我需要強制jinja2在應用皮膚選擇更改後重新加載模板。
我試着在模板環境對象上重新創建緩存對象,但沒有任何效果。
myskin_utils.py:
from jinja2.environment import create_cache
ENV_OBJECT.cache = create_cache(50)
我也嘗試重新加載一個包含我的
reload(myskin) #also no effect on the output
另一件事我想改變的飛行是語言ENV_OBJECT模塊,但我想這是一個單獨的問題。
感謝您的任何建議。我沒有使用jinja2設置緩存,但是我看到從Django模板切換後使用Jinja的速度提高了,我懷疑模板字節碼存在於我的視圖函數的編譯代碼中,但是我沒有研究過忍者的細節。
我有ENV(的CoffinEnvironment
一個實例,其子類神社的Environment
)在視圖模塊的全局命名空間的進口,並呼籲ENV.get_template()
內視圖功能(Django的+棺材+ Jinja2的)。
發現,如果我叫Python的reload()
內建我的環境模塊上內視圖功能模板做開關,但我不希望堅持的代碼到每一個功能。
謝謝!我沒有爲Jinja2設置緩存。如果我這樣做,你認爲我會在我的環境中加快速度嗎?我的理解是,我的模板字節碼已經在內存中,對不對?再次感謝! – Evgeny 2010-11-18 17:08:30
我認爲這個答案是錯誤的 - 根據[this](http://jinja.pocoo.org/docs/api/#bytecode-cache),字節碼緩存僅用於第一次運行,而不是每個請求。至於自動重新加載更改模板,有'auto_reload'選項[這裏](http://jinja.pocoo.org/docs/api/#jinja2.Environment)。不知道在2010年11月如果是相同的,這就是爲什麼我不低調這個答案。 – 2012-01-18 23:23:12