{{tag>dev python flask redirection}}
====== Flask : redirections ======
Le framework Flask propose la fonction ''redirect()''. Pour les redirections internes, on l'utilise conjointement à la fonction ''url_for()'' :
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/')
def home():
return 'Welcome to Home Page'
# Redirection externe
@app.route('/goto/sponsor/example_dot_com')
def external_redirect():
return redirect('https://www.example.com')
# Redirection interne
@app.route('/test-perm-redirect')
def redirect_example():
return redirect(url_for('home'), code=301)
On peut spécifier un [[https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP|code d'état HTML]] via l'option ''code''. Les plus utilisés sont :
* **301** : Ressource déplacée de façon permanente ;
* **302** : Ressource déplacée de façon temporaire.
===== Redirections avec paramètres =====
Il est possible de spécifier des paramètres notamment lorsque les URLs cibles sont dynamiques :
@app.route('/redirect-to-john-profile')
def redirect_to_user():
return redirect(url_for('show_user_profile', user_id=110))
@app.route('/user/profile/')
def show_user_profile(user_id: int) :
if not user_authenticaded():
return redirect(url_for('login'), code=301)
===== Références =====
* [[https://pytutorial.com/flask-redirect-a-guide-to-url-redirection-in-flask-apps/|Redirections avec Flask (pytutorial.com) (en)]]
* [[https://stackoverflow.com/questions/18423853/how-to-validate-url-and-redirect-to-some-url-using-flask|Comment valider une URL avant redirection (stackoverflow.com)(en)]]