Python 装饰器中的@wraps的作用:
- 装饰器的作用: 在不改变原有功能代码的基础上,添加额外的功能,如用户验证等
- @wraps(view_func)的作用: 不改变使用装饰器原有函数的结构(如__name__, __doc__)
- 不使用wraps可能出现的ERROR: view_func...endpoint...map...
使用方法:
# 创建验证用户登陆功能装饰器
from functools import wraps
def user_login_confirm(view_func):
@wraps(view_func)
def wrapper(*args, **kwargs):
# 验证用户是否登陆 --从session中获取user_id
user_id = session.get('user_id')
user = None
if user_id:
try:
from info.models import User
user = User.query.get(user_id)
except Exception as e:
current_app.logger.error(e)
return jsonify(errno=RET.DBERR, errmsg='查询用户失败')
# 将user对象保存到给g变量(g对象的值在本次的请求中有效)
g.user = user
return view_func(*args, **kwargs)
return wrapper
参考文章:https://www.liaoxuefeng.com/wiki/1016959663602400/1017451662295584
-----END-----