2015-07-21 15 views
6

Ho un modulo di indagine. Dopo aver inviato il modulo, mi piacerebbe gestire il salvataggio dei dati quindi reindirizzare a una vista "sucess". Sto usando il seguente codice in questo momento, ma rimane solo sull'url corrente, mentre mi piacerebbe andare a /success. Come posso fare questo?Reindirizzare ad altra vista dopo aver inviato il modulo

@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) 

risposta

5

Hai l'obiettivo giusto: è bene reindirizzare dopo aver gestito i dati del modulo. Invece di restituire render_template di nuovo, utilizzare invece redirect.

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') 

Il reindirizzamento saranno gestiti dal browser dell'utente, e la nuova pagina al nuovo URL verrà caricato, piuttosto che il rendering di un modello diverso allo stesso URL.

+0

È anche possibile utilizzare [messaggi flash] (http://flask.pocoo.org/docs/0.10/patterns/flashing/). – dirn

Problemi correlati