Si x = ohio
Je souhaite rediriger l'utilisateur vers / weather / ohio
Tout ce que j'ai pu me rendre au travail est / weather /? x = ohio
Je fais cela donc une seconde route @ app.route ("/ weather /") sera exécutée. Je ne suis pas sûr de ce qui me manque. EST-ce la meilleure façon de charger / weather / ohio, où ohio est une variable chargée à partir d'un formulaire.
@app.route("/weather/", methods = ['POST', 'GET']) def weather(): if request.method == 'POST': x = request.form['search_location'] return redirect(url_for('weather', x=x)) #print (y) else: return render_template("weather.html")
Si je prends le x = out, j'obtiens l'erreur "TypeError: url_for () prend 1 argument positionnel mais 2 ont été donnés"
3 Réponses :
Il prend des arguments de mot-clé pour les variables:
url_for('add', variable=x)
Le problème est qu'en utilisant votre exemple, l'URL devient 127.0.0.1:5000/weather/?variable= ohio quand j'ai besoin de 127.0.0.1:5000/weather/ohio
Si je comprends bien votre question, vous souhaitez un itinéraire dynamique?
Consultez ici https://www.tutorialspoint.com/flask/flask_variable_rules.htm
@app.route("/weather/<variable>", methods = ['POST', 'GET'])
J'ai un de que je remplis
à partir de ce formulaire, transmettez la variable dont vous avez besoin à l'itinéraire que je viens de vous montrer, puis transmettez-la à votre fonction. Consultez le didacticiel que j'ai lié et lisez la documentation du flask, qui explique très bien cela
Je ne vois aucun exemple de variables dans la redirection (url_for
Vous devez avoir le deuxième point de terminaison avec une variable de chemin et donner à url_for ()
le nom de la fonction associée au point de terminaison:
@app.route("/weather", methods = ["POST", "GET"]) def weather(): if request.method == "POST": x = request.form["search_location"] return redirect(url_for("weather_location", x=x)) else: return render_template("weather.html") @app.route("/weather/<x>") def weather_location(x): return "It's always sunny in {}".format(x)
Jetez un œil à cette autre question pour peut-être un peu plus de clarté.
Si l'une des réponses a aidé, envisagez de la marquer comme telle, afin que d'autres personnes ayant le même problème puissent également trouver la solution
Il s'avère que le problème était que le problème était que la redirection de retour (url_for ('weather', x = x)) pointait vers la mauvaise fonction, elle était supposée être des conditions météorologiques NON météorologiques.