2014-11-16 14 views
11

sto cercando di capire il modo migliore per reindirizzare e passare argomenti utilizzando FlaskCome posso passare gli argomenti al reindirizzamento (url_for()) di Flask?

Di seguito è riportato il mio codice, ho constatato che x e y non stanno facendo che nel modello.

La mia sintassi è corretta? Mi manca qualcosa di base? Sono in grado di rendere il modello, ma voglio reindirizzare l'url /found, piuttosto che restituire il modello per find.html

@app.route('/found') 
def found(email,listOfObjects): 
    return render_template("found.html", 
     keys=email,obj=listOfObjects) 

@app.route('/find', methods=['GET','POST']) 
def find(): 
    if request.method == 'POST': 
     x = 3 
     y = 4 
     return redirect(url_for('found',keys=x,obj=y)) 

    return render_template("find.html") 

risposta

29

Il redirect va bene, il problema è con il percorso found. Esistono diversi modi per trasferire i valori a un endpoint: come parte del percorso, nei parametri URL (per richieste GET) o corpo della richiesta (per le richieste POST).

In altre parole, il codice dovrebbe apparire come segue:

@app.route('/found/<email>/<listOfObjects>') 
def found(email, listOfObjects): 
    return render_template("found.html", 
     keys=email, obj=listOfObjects) 

alternativa:

@app.route('/found') 
def found(): 
    return render_template("found.html", 
     keys=request.args.get('email'), obj=request.args.get('listOfObjects')) 

Inoltre, il reindirizzamento dovrebbe fornire parametri di richiesta, parametri non template:

return redirect(url_for('found', email=x, listOfObjects=y)) 

Spero che questo aiuti.

+0

Grazie! Darò un colpo. Questo è esattamente quello che stavo cercando – kmomo

+2

Se questo è quello che stavi cercando, non esitare a votare e/o accettare la risposta. –

+1

L'uso del reindirizzamento (url_for()) può passare un oggetto come parametro? – tw1742

Problemi correlati