2011-10-27 65 views

回答

3

你有三種可能的解決方案來實現這一點。

首先,您可以使用tg.tmpl_context,它在每個模板中都可用作爲tmpl_context。 您可以填寫BaseController.__call__中的變量,以便它們在任何地方都可用。

另一種方法是在app_cfg.py中註冊base_config.variable_provider,它必須是一個函數,該函數返回任何模板內可用的變量字典。如果發生名稱衝突,這些變量將被控制器返回的變量覆蓋,所以爲控制器返回的變量提供缺省值是一種好方法。

否則在最近的版本中,也可以使用base_config.register_hookapp_cfg.py內系統範圍註冊before_render掛鉤,該回調可以附加並覆蓋任何模板參數。

+0

'base_config.variable_provider'對我來說也是新的! – moschlar

1

我不知道這是否會是做的最好的方式但你可以添加以下app_globals.Global:

from genshi.core import Markup 
self.foo = lambda: Markup("<div>my content here!!!</div>") 

,然後在你的模板:

${g.foo()} 

或者你可以通過ajax請求...

相關問題