2 回答

TA贡献1799条经验 获得超8个赞
要在登录时对用户进行身份验证,您可以这样做:
from flask import redirect, render_template, request, session
from functools import wraps
def login_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if not (current_user.is_authenticated and current_user.account_type == 'su'):
return redirect(url_for('blueblue.login'))
return f(*args, **kwargs)
return decorated_function
这为登录用户定义了一个单独的装饰器。
使用装饰器就像包含一行简单的代码一样简单:
@blueblue.route('/', methods=['GET', 'Post'])
@login_required
def deactivate_trainer():
form = ActivateDeactivateTrainer
return render_template('x.html', form=form)
瞧!您不必再使用那些烦人的 if-else 条件!

TA贡献1804条经验 获得超2个赞
你必须functools.wraps()在烧瓶中使用它来处理
这就是我编辑你的代码的方式:
from functools import wraps
from flask import redirect, url_for
def my_decorator(function):
@wraps(function)
def decorated_function(*args, **kwargs):
if current_user.is_authenticated and current_user.account_type == 'su':
return function(*args, **kwargs)
else:
return redirect(url_for('blueblue.login'))
你可以这样使用你的装饰器
@blueblue.route('/', methods=['GET', 'Post'])
@my_decorator
def deactivate_trainer():
#...
添加回答
举报