在Flask中,似乎可以通过直接修改响应对象来设置Cookie。
如何成功返回响应对象,又如何在成功登录后将用户重定向到其他页面?我想专门重定向用户,而不是渲染其他页面,以防用户点击REFRESH。
这是我当前的代码,它仅显示同一页面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