我希望仅当登录用户具有所需的权限级别时才能执行不同的功能。
为了让我的生活更简单,我想使用装饰器。下面我尝试permission
在“装饰”功能上设置属性 - 如下所示。
def permission(permission_required):
def wrapper(func):
def inner(*args, **kwargs):
setattr(func, 'permission_required', permission_required)
return func(*args, **kwargs)
return inner
return wrapper
@permission('user')
def do_x(arg1, arg2):
...
@permission('admin')
def do_y(arg1, arg2):
...
但是当我这样做时:
fn = do_x
if logged_in_user.access_level == fn.permission_required:
...
我收到一个错误'function' object has no attribute 'permission_required'
我错过了什么?