Когда метод предоставлен, он может вернуть dict, используемый шаблоном:
class RootController(TGController):
@expose('myapp.templates.index')
def index(self):
self.mykey = "foo"
self.mymenu = ["item1", "item2", "item3"]
self.selected = "item1"
return dict( mykey=self.mykey, mymenu=self.mymenu, selected=self.selected)
Этот код работает нормально.Теперь я хотел бы заключить панель меню в декоратор так:
class RootController(TGController):
@expose('myapp.templates.index')
@menu()
def index(self):
self.mykey = "foo"
self.mymenu = ["item1", "item2", "item3"]
self.selected = "item1"
return dict( mykey=self.mykey)
Но я не знаю, как написать этот декоратор меню.Если я использую:
def before_render_cb(remainder, params, output):
return output.update( dict(mymenu=["item1", "item2", "item3"], selected="item1"))
class RootController(TGController):
@expose('myapp.templates.index')
@before_render(before_render_cb)
def index(self):
self.mykey = "foo"
self.mymenu = ["item1", "item2", "item3"]
self.selected = "item1"
return dict( mykey=self.mykey)
Это добавит mymenu и выбрано в dict, но у меня нет доступа к атрибуту экземпляра контроллера (self.mymenu и self.selected)
Если я использую декоратор:
class menus(object):
def __call__(self, func):
deco = Decoration.get_decoration(func)
return func
Я могу иметь доступ к украшению, но не к экспонируемому объекту и не к контроллеру
Как я могу это сделать?Заранее благодарим за помощь
Лоран