Flask下使用装饰器,提示错误
AssertionError: expected view func if endpoint is not provided.
详见: http://flask.pocoo.org/docs/0.12/patterns/viewdecorators/
修改: 必须使用functools的@wraps(f) 来保留当前使用函数的元数据才行:
如下:
from functools import wraps
# 装饰器:检测用户是否登录
def user_access(func):
@wraps(func)
def wrapper(*args):
if db.login(session):
return func(*args)
return redirect('/login')
return wrapper
# admin
@app.route('/admin') # 并且路由装饰器一定要放在最外面
@user_access
def admin():
return render_template('/admin.html')