{{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)]]