一、普通装饰器
from functools import wraps
def check_permission(func):
# 使用functools.wraps可以保留原函数的属性
@wraps(func)
def wrap(request, *args, **kwargs):
try:
pass
except MyException as e:
raise e
except Exception:
raise MyException(code=403, msg=f'权限验证异常')
return func(request, *args, **kwargs)
return wrap
二、带参数的装饰器
from functools import wraps
def check_permission(param='test'):
def wrapper(func):
@wraps(func)
def wrap(request, *args, **kwargs):
try:
# 加入你的自定义代码
print(param)
except MyException as e:
raise e
except Exception:
raise MyException(code=403, msg=f'权限验证异常')
return func(request, *args, **kwargs)
return wrap
return wrapper