【发布时间】:2011-04-01 15:31:59
【问题描述】:
在python中,是否可以检测另一个函数上是否有装饰器?
具体来说,我正在尝试(在 django 中)编写一些中间件,用于检测正在处理的视图是否已包装在 @login_required 装饰器中。
class SomeMiddleware(object):
def process_view(self, request, view_func, view_args, view_kwargs):
if has_decorator(view_func):
print "this view was decorated"
我要填写的是“has_decorator”部分......
这可能吗?
【问题讨论】:
-
这个问题的答案是个坏主意。不要自己编造应用装饰器的特殊魔法。
-
感谢您的链接,但这并不是我想要的。我希望只有一些用于检测装饰器的 python 函数或属性。
-
一般来说,几乎可以肯定不是。装饰器只是一个可调用的,它接受一些函数,并用一个新函数替换它。如果您对可能应用的装饰器有所了解,可以检查它们的效果。
-
这就是我的发现......
标签: python django django-views