2013-05-21 54 views
1

我用燒杯作爲會話中間件。我想包括在我所有的灰鯖模板我的會話對象,而無需指定它渲染時:使用瓶子爲所有的mako模板設置一個全局變量?

取而代之的是:

return mako_template("myView", { 
    "session" : bottle.request.environ.get('beaker.session') 
}) 

只是這樣做:

return mako_template("myView") 

這是可能?如果是這樣,怎麼樣?

回答

4

我不知道馬可的模板,但對瓶SimpleTemplates您可以使用BaseTemplate.default:

bottle.BaseTemplate.defaults['session'] = bottle.request.environ.get('beaker.session') 

然而,由於要設置,在應用程序實例化時,bottle.request可能無效。因此,您可能需要將其轉變爲在請求值時執行延遲評估的內容。

也許BaseTemplate.defaults被送入Mako模板,或者Mako提供了類似的設置默認值的機制?

我希望這可以幫助您指出正確的方向。

+1

太棒了!它適用於所有模板,因爲它們都從BaseTemplate繼承而來! :) – Andreas