Flask - Reindirizzamento ed errori
La classe Flask ha un'estensione redirect()funzione. Quando viene chiamato, restituisce un oggetto risposta e reindirizza l'utente a un'altra posizione di destinazione con il codice di stato specificato.
Prototipo di redirect() la funzione è la seguente:
Flask.redirect(location, statuscode, response)
Nella funzione sopra -
location è l'URL a cui deve essere reindirizzata la risposta.
statuscode inviato all'intestazione del browser, il valore predefinito è 302.
response viene utilizzato per istanziare la risposta.
I seguenti codici di stato sono standardizzati:
- 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
Il default status il codice è 302, che è per ‘found’.
Nell'esempio seguente, il redirect() viene utilizzata per visualizzare nuovamente la pagina di accesso quando un tentativo di accesso non riesce.
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)
La classe Flask ha abort() funzione con un codice di errore.
Flask.abort(code)
Il Code il parametro assume uno dei seguenti valori:
400 - per cattiva richiesta
401 - per Non autenticato
403 - per Proibito
404 - per Non trovato
406 - per Non accettabile
415 - per Tipo di supporto non supportato
429 - Troppe richieste
Facciamo un leggero cambiamento nel file login()funzione nel codice sopra. Invece di visualizzare nuovamente la pagina di accesso, se‘Unauthourized’ pagina deve essere visualizzata, sostituirla con chiamata a 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)