Flasche - Weiterleitung & Fehler
Flaschenklasse hat eine redirect()Funktion. Beim Aufruf wird ein Antwortobjekt zurückgegeben und der Benutzer mit dem angegebenen Statuscode an einen anderen Zielspeicherort umgeleitet.
Prototyp von redirect() Funktion ist wie folgt -
Flask.redirect(location, statuscode, response)
In der obigen Funktion -
location Parameter ist die URL, unter der die Antwort umgeleitet werden soll.
statuscode Wird an den Header des Browsers gesendet und ist standardmäßig 302.
response Der Parameter wird verwendet, um die Antwort zu instanziieren.
Die folgenden Statuscodes sind standardisiert -
- 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
Das default status Code ist 302, das ist für ‘found’.
Im folgenden Beispiel wird die redirect() Mit dieser Funktion wird die Anmeldeseite erneut angezeigt, wenn ein Anmeldeversuch fehlschlägt.
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'))
else:
return redirect(url_for('index'))
@app.route('/success')
def success():
return 'logged in successfully'
if __name__ == '__main__':
app.run(debug = True)
Flaschenklasse hat abort() Funktion mit einem Fehlercode.
Flask.abort(code)
Das Code Parameter nimmt einen der folgenden Werte an -
400 - für schlechte Anfrage
401 - für nicht authentifiziert
403 - für Verboten
404 - für nicht gefunden
406 - für nicht akzeptabel
415 - für nicht unterstützten Medientyp
429 - Zu viele Anfragen
Nehmen wir eine kleine Änderung in der login()Funktion im obigen Code. Anstatt die Anmeldeseite erneut anzuzeigen, wenn‘Unauthourized’ Seite angezeigt werden soll, durch Aufruf an ersetzen abort(401).
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)