在Flask中,设置一个Cookie,然后重定向用户 [英] In Flask, set a cookie and then re-direct user
本文介绍了在Flask中,设置一个Cookie,然后重定向用户的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在Flask中,好像cookie是通过直接修改响应对象来设置的.
It seems like in Flask, cookies are set by modifying the response object directly.
如何返回响应对象,还可以在成功登录后将用户重定向到其他页面?我想专门重定向用户,而不是渲染其他页面,以防用户点击刷新.
How can I return a response object, but also redirect a user to a different page upon successful login? I'd like to specifically redirect the user instead of rendering a different page, in case the user hits REFRESH.
这是我当前的代码,该代码仅显示同一页面login.html:
Here's my current code, which simply displays the same page, login.html:
@app.route('/login', methods=['POST', 'GET'])
def login():
errors = []
if request.method == 'POST':
email = request.form['email']
password = request.form['password']
#Check the user's e-mail
try:
u = User(email)
except UserError, e:
errors.append(e)
else:
#Check the user's password
if not u.authenticatePassword(password):
errors.append(('password','Invalid password'))
return render_template('login.html',error=errors)
#Set the session
s = Session()
s.user_id = u.user_id
s.ip = request.remote_addr
#Try to set the cookie
if s.setSession():
response = make_response( render_template('login.html',error=errors))
response.set_cookie('session_id', s.session_id)
return response
return render_template('login.html',error=errors)
推荐答案
您应该将代码更改为:
from flask import make_response
if s.setSession():
response = make_response(redirect('/home'))
response.set_cookie('session_id', s.session_id)
return response
这篇关于在Flask中,设置一个Cookie,然后重定向用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文