1

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

而不是这个:

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

这样做:

return mako_template("myView")

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

4

1 回答 1

4

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

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

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

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

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

于 2013-09-02T21:33:49.227 回答