2015-07-21 6 views
6

Anket formum var. Formu gönderdikten sonra, verileri kaydetmeyi ve daha sonra "başarılı" bir görünüme yönlendirmeyi istiyorum. Şu anda şu kodu kullanıyorum, ancak şu anki URL'de kalıyor, /success'a gitmek istiyorum. Bunu nasıl yapabilirim?Form verdikten sonra diğer görünümlere yönlendirme

@app.route('/surveytest', methods=['GET', 'POST']) 
def surveytest(): 
    if request.method == 'GET': 
     return render_template('test.html', title='Survey Test', year=datetime.now().year, message='This is the survey page.') 
    elif request.method == 'POST': 
     name = request.form['name'] 
     address = request.form['address'] 
     phone = request.form['phone'] 
     email = request.form['email'] 
     company = request.form['company'] 
     return render_template('success.html', name=name, address=address, phone = phone, email = email, company = company) 

cevap

5

Doğru hedefe sahipsiniz: form verilerini ele aldıktan sonra yeniden yönlendirmek iyidir. render_template'u tekrar döndürmek yerine, redirect kullanın.

from flask import redirect, url_for, survey_id 

@app.route('/success/<int:result_id>') 
def success(result_id): 
    # replace this with a query from whatever database you're using 
    result = get_result_from_database(result_id) 
    # access the result in the tempalte, for example {{ result.name }} 
    return render_template('success.html', result=result) 

@app.route('/survey') 
def survey(): 
    if request.method == 'POST': 
     # replace this with an insert into whatever database you're using 
     result = store_result_in_database(request.args) 
     return redirect(url_for('success', result_id=result.id)) 

    # don't need to test request.method == 'GET' 
    return render_template('survey.html') 

yönlendirme

kullanıcının tarayıcısı tarafından ele alınacaktır ve yeni url'deki Yeni sayfa oldukça aynı url'deki farklı bir şablon render daha yüklenecektir.

+0

Ayrıca, [hızlı mesajlar] da kullanabilirsiniz (http://flask.pocoo.org/docs/0.10/patterns/flashing/). – dirn