这不是我的专业领域,但它可能会有所帮助。
您可能能够自省Allow
以找出它正在装饰的对象。
>>>from django.core.urlresolvers import resolve
>>>func, args, kwargs=resolve('/edit_settings/')
>>>func
Allow
你可以试试
>>>func.func_name
但它可能不会返回您想要的视图功能。
这是我在尝试基本装饰器功能时发现的:
>>>def decorator(func):
... def wrapped(*args,**kwargs):
... return func(*args,**kwargs)
... wrapped.__doc__ = "Wrapped function: %s" %func.__name__
... return wrapped
>>>def add(a,b):
... return(a,b)
>>>decorated_add=decorator(add)
在这种情况下,当我尝试decorated_add.func_name
它返回时wrapped
。但是,我想找到一种方法来返回add
。因为我将文档字符串添加到wrapped
,所以我可以确定原始函数名称:
>>>decorated_add.func_name
wrapped
>>>decorated_add.__doc__
'Wrapped function: add'
希望您可以通过修改装饰器函数来了解如何自省Allow
以找出视图函数的名称。