English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Un'applicazione basata su GUI di buona qualità deve fornire informazioni di feedback interattive agli utenti. Ad esempio, gli applicativi desktop utilizzano i dialoghi o i messaggi di sistema, mentre JavaScript utilizza la funzione alert() per scopi simili.
È facile generare messaggi informativi in un'applicazione web Flask. Il sistema di flash del framework Flask permette di creare un messaggio in una vista e visualizzarlo nella funzione di vista chiamata next.
Il modulo Flask contiene il metodo flash(). Passing through il messaggio alla prossima richiesta, che di solito è un modello.
# Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 flash(message, category)
Ecco -
message - Il parametro è il messaggio effettivo da aggiornare. category - Il parametro è opzionale. Può essere "errore", "informazione" o "avviso".
Per eliminare i messaggi dalla sessione, chiamare la funzione get_flashed_messages() nel modello.
# Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 get_flashed_messages(with_categories, category_filter)
Entrambi i parametri sono opzionali. Se il messaggio ricevuto ha una categoria, il primo parametro è un tuple. Il secondo parametro è utile per mostrare messaggi specifici.
Ecco i messaggi ricevuti nel modello di flash.
# Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 {% with messages = get_flashed_messages() %} {% if messages %} {% for message in messages %} {{ message }} {% endfor %} {% endif %} {% endwith %}
Ora guardiamo un esempio semplice che dimostra il meccanismo di flash di Flask. Nel codice seguente, l'URL => "/" mostra il link alla pagina di accesso senza specificare un messaggio da inviare.
# Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 @app.route('/') def index(): return render_template('index.html')
Questo link guida l'utente a visualizzare l'URL del modulo di accesso => "/login". Al momento del submit, la funzione login() verifica il nome utente e la password e visualizza il messaggio variabile "Successo" o "Errore".
# Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 @app.route('/login', methods=['GET', 'POST']) def login(): error = None if request.method == 'POST': if request.form['username'] != 'admin' or \ request.form['password'] != 'admin': error = 'Invalid username or password. Please try again!' else: flash('You were successfully logged in') return redirect(url_for('index')) return render_template('login.html', error=error)
In caso di errore, il modello di accesso verrà visualizzato di nuovo e mostrerà il messaggio di errore.
File modello: login.html Il codice è il seguente -
# Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Esempio Flask</title> </head> <body> <h1>Accesso</h1> {% if error %} <p><strong>Errore:</strong> {{ error }}</p> {% endif %} <form action="/login" method="POST"> <dl> <dt>Nome utente:</dt> <dd> <input type=text name="username" value="{{request.form.username}}"> </dd> <dt>Parola chiave:</dt> <dd><input type="password" name="password"></dd> </dl> <p><input type=submit value="Accedi"></p> </form> </body> </html>
Se l'accesso è riuscito, viene visualizzato un messaggio di successo nella pagina di index. Il seguente codice è salvato nel file ( index.html) -
# Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Flashing di Messaggi Flask</title> </head> <body> {% with messages = get_flashed_messages() %} {% if messages %} <ul class=flashes> {% for message in messages %} <li>{{ message }}</li> {% endfor %} </ul> {% endif %} {% endwith %} <h1>Esempio di Flashing di Messaggi Flask</h1> <p>Vuoi <a href="{{ url_for('login') }}"> <b>Accedi?</b></a></p> </body> </html>
Ecco l'esempio completo del codice di esempio di messaggio flash Flask:
# Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 from flask import Flask, flash, redirect, render_template, request, url_for app = Flask(__name__) app.secret_key = 'stringa casuale' @app.route('/') def index(): return render_template('index.html') @app.route('/login', methods=['GET', 'POST']) def login(): error = None print(request.method) if request.method == 'POST': if request.form['username'] != 'admin' or \ request.form['password'] != 'admin': error = 'Invalid username or password. Please try again!' else: #flash('您已成功登录') flash('You were successfully logged in') return redirect(url_for('index')) return render_template('login.html', error=error) if __name__ == "__main__": app.run(debug=True)
Dopo aver eseguito il codice sopra, vedrete lo schermo come segue.
Quando si clicca sul link, si verrà reindirizzati alla pagina di login. Inserisci nome utente e password -
Clicca LoginPulsante. Verrà visualizzato un messaggio "Hai effettuato il login con successo".