2013-05-21 6 views
1

Я использую бутылку с стаканом в качестве промежуточного программного обеспечения для сеанса. Я хотел бы включить мой объект сеанса во всех моих шаблонов Mako без указания его при визуализации:Установить глобальную переменную для всех шаблонов 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