turbogears2中是否有任何類似的Django上下文處理器? 在tg1中是stdvars,但不在tg2中。Turbogears2:Django上下文處理器的模擬
解釋: 我需要在每個頁面上都有一些模板標籤,在每個控制器中都沒有明顯的聲明。
turbogears2中是否有任何類似的Django上下文處理器? 在tg1中是stdvars,但不在tg2中。Turbogears2:Django上下文處理器的模擬
解釋: 我需要在每個頁面上都有一些模板標籤,在每個控制器中都沒有明顯的聲明。
你有三種可能的解決方案來實現這一點。
首先,您可以使用tg.tmpl_context
,它在每個模板中都可用作爲tmpl_context
。 您可以填寫BaseController.__call__
中的變量,以便它們在任何地方都可用。
另一種方法是在app_cfg.py
中註冊base_config.variable_provider
,它必須是一個函數,該函數返回任何模板內可用的變量字典。如果發生名稱衝突,這些變量將被控制器返回的變量覆蓋,所以爲控制器返回的變量提供缺省值是一種好方法。
否則在最近的版本中,也可以使用base_config.register_hook
在app_cfg.py
內系統範圍註冊before_render
掛鉤,該回調可以附加並覆蓋任何模板參數。
我不知道這是否會是做的最好的方式但你可以添加以下app_globals.Global:
from genshi.core import Markup
self.foo = lambda: Markup("<div>my content here!!!</div>")
,然後在你的模板:
${g.foo()}
或者你可以通過ajax請求...
'base_config.variable_provider'對我來說也是新的! – moschlar