使用瓶子为所有mako模板设置全局变量?

时间:2013-05-21 10:00:23

标签: bottle mako beaker

我正在使用带烧杯的瓶子作为会话中间件。我想在我的所有mako模板中包含我的会话对象,而不在渲染时指定它:

而不是:

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

这样做:

return mako_template("myView")

这可能吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:4)

我不知道Mako模板,但对于Bottle SimpleTemplates,您可以使用BaseTemplate.default:

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

但是,由于您在应用程序实例化时设置了该值,因此bottle.request可能无效。因此,您可能需要将其转换为在请求值时进行延迟评估的内容。

也许BaseTemplate.defaults被输入Mako模板,或者Mako提供了类似的机制来设置默认值?

我希望这有助于指明你正确的方向。