Уведомления

Группа в Telegram: @pythonsu

#1 Март 28, 2009 17:11:37

Anvolk
От:
Зарегистрирован: 2008-08-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование декораторов в контоллере?

Pylons 0.9.6.2

Не получается заставить работать со своим декоратором.

в контроллере

class MyController(BaseController)
def mydecorator(fn)
def mywrap(*args)
….
return fn(*args)
return mywrap

@mydecorator
def mymeth1(self)


@mydecorator
def mymeth2(self, id=None)


с декоратором mymeth2 всегда вызывается с id=None, хотя id имеет какое-то значение. Если убрать декорирование всё ОК.

если декоратор описан как
def mydecorator(fn)
def mywrap(*args, **kwargs)
….
return fn(*args, **kwargs)
return mywrap

вылетает ошибка <type ‘exceptions.TypeError’>: mymeth2() got an unexpected keyword argument ‘action’

подскажите как лечится?



Отредактировано (Март 28, 2009 17:12:19)

Офлайн

#2 Март 28, 2009 20:01:21

ofigetitelno
От:
Зарегистрирован: 2006-08-01
Сообщения: 136
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование декораторов в контоллере?

:)
Проще всего посмотреть на пилоновские декораторы, и сделать по аналогии…



Офлайн

#3 Март 30, 2009 08:03:45

Anvolk
От:
Зарегистрирован: 2008-08-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование декораторов в контоллере?

Получилось если делать так:

from decorator import decorator

@decorator
def mydecorator(f, *args, **kws):

return f(*args, **kws)


пример 14 на http://www.ibm.com/developerworks/linux/library/l-cpdecor.html



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version