Hoe kan ik argumenten doorgeven aan redirect(url_for()) van Flask?

Ik probeer te begrijpen hoe ik het beste argumenten kan omleiden en doorgeven met Flask

Hieronder staat mijn code, ik merk dat xen yde sjabloon niet halen.

Is mijn syntaxis correct? Mis ik iets fundamenteels? Ik kan de sjabloon renderen, maar ik wil omleiden naar de url /found, in plaats van alleen de sjabloon terug te sturen voor 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")

Antwoord 1, autoriteit 100%

De omleiding is prima, het probleem zit in de foundroute. U heeft verschillende manieren om waarden door te geven aan een eindpunt: ofwel als onderdeel van het pad, in URL-parameters (voor GET-verzoeken) of verzoektekst (voor POST-verzoeken).

Met andere woorden, uw code zou er als volgt uit moeten zien:

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

Alternatief:

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

Bovendien moet uw omleiding verzoekparameters bevatten, geen sjabloonparameters:

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

Hopelijk helpt dat.

Other episodes