Flask 登录后返回 302 状态码(不重定向到主页)
Flask Login Returning a 302 Status Code After Login (Not Redirecting to Home Page)
当尝试使用 Flask-Login 并输入我的登录信息时,我不断收到如下所示的 302 状态代码
"POST /login HTTP/1.1" 302 -
后跟 200 状态码:
"GET /login HTTP/1.1" 200 -
这段代码前段时间运行良好,我在互联网上(包括 Whosebug)进行了搜索,试图找到解决这个问题的方法,但没有找到解决方法。是的,有关于使用 flask 时出现 302 状态码的帖子,但它们对我没有帮助。我正在使用的代码如下。
@app.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('index'))
form = LoginForm()
if form.validate_on_submit():
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user is None or not user.check_password(form.password.data):
flash('Invalid username or password')
return redirect(url_for('login'))
login_user(user, remember=form.remember_me.data)
next_page = request.args.get('next')
if not next_page or url_parse(next_page).netloc != '':
next_page = url_for('index')
return redirect(next_page)
return render_template('login.html', title='Sign In', form=form)
这就是我的索引路线:
@app.route('/index')
@app.route('/')
def index():
return render_template('index.html')
您的代码可以稍微简化一下。例如你有两次:if form.validate_on_submit():
这是您的代码的重构版本。请注意,如果登录失败,则不需要 return redirect(url_for('login'))
,因为最后有 render_template
,这将是 运行,并且在页面最初加载时(GET 请求)也是如此。由于您已经在登录例程中,因此重定向实际上没有意义。您只需要调整执行流程即可。
@app.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('index'))
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user is None or not user.check_password(form.password.data):
flash('Invalid username or password')
else:
login_user(user, remember=form.remember_me.data)
next_page = request.args.get('next')
if not next_page or url_parse(next_page).netloc != '':
next_page = url_for('index')
return redirect(next_page)
return render_template('login.html', title='Sign In', form=form)
当尝试使用 Flask-Login 并输入我的登录信息时,我不断收到如下所示的 302 状态代码
"POST /login HTTP/1.1" 302 -
后跟 200 状态码:
"GET /login HTTP/1.1" 200 -
这段代码前段时间运行良好,我在互联网上(包括 Whosebug)进行了搜索,试图找到解决这个问题的方法,但没有找到解决方法。是的,有关于使用 flask 时出现 302 状态码的帖子,但它们对我没有帮助。我正在使用的代码如下。
@app.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('index'))
form = LoginForm()
if form.validate_on_submit():
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user is None or not user.check_password(form.password.data):
flash('Invalid username or password')
return redirect(url_for('login'))
login_user(user, remember=form.remember_me.data)
next_page = request.args.get('next')
if not next_page or url_parse(next_page).netloc != '':
next_page = url_for('index')
return redirect(next_page)
return render_template('login.html', title='Sign In', form=form)
这就是我的索引路线:
@app.route('/index')
@app.route('/')
def index():
return render_template('index.html')
您的代码可以稍微简化一下。例如你有两次:if form.validate_on_submit():
这是您的代码的重构版本。请注意,如果登录失败,则不需要 return redirect(url_for('login'))
,因为最后有 render_template
,这将是 运行,并且在页面最初加载时(GET 请求)也是如此。由于您已经在登录例程中,因此重定向实际上没有意义。您只需要调整执行流程即可。
@app.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('index'))
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user is None or not user.check_password(form.password.data):
flash('Invalid username or password')
else:
login_user(user, remember=form.remember_me.data)
next_page = request.args.get('next')
if not next_page or url_parse(next_page).netloc != '':
next_page = url_for('index')
return redirect(next_page)
return render_template('login.html', title='Sign In', form=form)