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

Flash messaggi Flask

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".