English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La classe Flask possède une fonction de redirection redirect(). Lors de l'appel, elle retourne un objet de réponse et redirige l'utilisateur vers une autre destination avec un code d'état spécifié.
L'originalité de la fonction redirect() est la suivante -
# Fichier : example.py # Copyright : 2020 By w3codebox # Auteur par : fr.oldtoolbag.com # Date : 2020-08-08 Flask.redirect(location, statuscode, response)
Dans la fonction précédente -
location Le paramètre est l'URL vers laquelle la réponse doit être redirigée. statuscode Le paramètre envoie des en-têtes au navigateur, par défaut c'est302. response Les paramètres sont utilisés pour instancier les réponses.
Les codes d'état suivants sont standardisés -
HTTP_300_MULTIPLE_CHOICES HTTP_301_MOVED_PERMANENTLY HTTP_302_FOUND HTTP_303_SEE_OTHER HTTP_304_NOT_MODIFIED HTTP_305_USE_PROXY HTTP_306_RESERVED HTTP_307_TEMPORARY_REDIRECT
Le code d'état par défaut est302C'est ce qui représente la page 'trouvée'.
Dans l'exemple suivant, la fonction redirect() est utilisée pour rediriger vers la page de connexion à nouveau en cas d'échec de tentative de connexion.
# Fichier : example.py # Copyright : 2020 By w3codebox # Auteur par : fr.oldtoolbag.com # Date : 2020-08-08 from flask import Flask, redirect, url_for, render_template, request # Initialize the Flask application app = Flask(__name__) @app.route('/) def index(): return render_template('log_in.html') @app.route('/login',methods=['POST', 'GET']) def login(): if request.method == 'POST' and request.form['username'] == 'admin' : return redirect(url_for('success')) return redirect(url_for('index')) @app.route('/success()) def success(): return 'logged in successfully' if __name__ == '__main__': app.run(debug=True)
La classe Flask possède une fonction abort() avec un code d'erreur.
# Fichier : example.py # Copyright : 2020 By w3codebox # Auteur par : fr.oldtoolbag.com # Date : 2020-08-08 Flask.abort(code)
L'argument code utilise l'une des valeurs suivantes -
400 - Pour les demandes incorrectes 401 - Pour non authentifié 403 - Interdit 404 - Non trouvé 406 - Inacceptable 415 - Pour les types de média non pris en charge 429 - Trop de demandes
Voici quelques modifications mineures apportées à la fonction login() du code précédent. Si vous souhaitez afficher la page "Unauthourized" plutôt que de rediriger vers la page de connexion, remplacez-la par un arrêt de type (401) appel.
# Fichier : example.py # Copyright : 2020 By w3codebox # Auteur par : fr.oldtoolbag.com # Date : 2020-08-08 from flask import Flask, redirect, url_for, render_template, request, abort app = Flask(__name__) @app.route('/) def index(): return render_template('log_in.html') @app.route('/login',methods=['POST', 'GET']) def login(): if request.method == 'POST': if request.form['username'] == 'admin': return redirect(url_for('success')) else: abort(401) else: return redirect(url_for('index')) @app.route('/success()) def success(): return 'logged in successfully' if __name__ == '__main__': app.run(debug=True)