English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Redirezione e errori Flask

La classe Flask ha la funzione di reindirizzamento redirect(). Quando viene chiamata, restituisce un oggetto di risposta e reindirizza l'utente a un altro luogo con lo stato di risposta specificato.

Ecco l'原型 della funzione redirect() -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Date: 2020-08-08
Flask.redirect(location, statuscode, response)

Nella funzione sopra menzionata -

location Il parametro è l'URL che la risposta deve essere reindirizzata. statuscode Il parametro invia l'intestazione del browser, predefinito a 302. response I parametri vengono utilizzati 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 codice di stato predefinito è 302, che indica una pagina 'trovata'.

Nell'esempio seguente, la funzione redirect() viene utilizzata per visualizzare di nuovo la pagina di login in caso di fallimento del tentativo di login.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Date: 2020-08-08
from flask import Flask, redirect, url_for, render_template, request
 # Inizializzare l'applicazione Flask
 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 ha una funzione abort() con un codice di errore.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Date: 2020-08-08
Flask.abort(code)

Il parametro 'code' utilizza uno dei seguenti valori -

400 - Per richieste errate 401 - Utilizzato per non autenticato 403 - vietato 404 - Non trovato 406 - Non accettabile 415 - Utilizzato per i tipi di media non supportati 429 - Richiesta troppo frequente

Ecco alcune modifiche minime alla funzione login() del codice sopra. Se si desidera visualizzare la pagina 'Unauthourized' invece di visualizzare di nuovo la pagina di login, sostituirlo con la chiamata di interruzione (401).

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.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)