2012-09-04 15 views
19

Có vẻ như trong Flask, cookie được đặt bằng cách sửa đổi đối tượng phản hồi một cách trực tiếp.Trong Flask, đặt cookie và sau đó chuyển trực tiếp người dùng

Làm cách nào để trả lại đối tượng phản hồi mà còn chuyển hướng người dùng đến trang khác khi đăng nhập thành công? Tôi muốn chuyển hướng cụ thể người dùng thay vì hiển thị một trang khác, trong trường hợp người dùng truy cập REFRESH.

Đây là mã hiện tại của tôi, mà chỉ đơn giản hiển thị cùng một trang, 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) 

Trả lời

34

Bạn nên thay đổi mã của bạn để một cái gì đó như:

from flask import make_response 
if s.setSession(): 
    response = make_response(redirect('/home')) 
    response.set_cookie('session_id', s.session_id) 
    return response 
Các vấn đề liên quan