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

Flask Nachrichtenblitz

Eine gut gestaltete GUI-Anwendung muss dem Benutzer interaktive Feedbackinformationen bieten. Zum Beispiel verwenden Desktop-Anwendungen Dialog- oder Nachrichtenfenster, und JavaScript verwendet die Funktion alert() für ähnliche Zwecke.

Es ist einfach, solche Informationsmeldungen in einer Flask-Webanwendung zu generieren. Das Flash-System des Flask-Frameworks ermöglicht es, eine Nachricht in einer Ansicht zu erstellen und sie in der als next bezeichneten Ansichtsfunction anzuzeigen.

Das Flask-Modul enthält die Methode flash(). Diese Methode übermittelt eine Nachricht an den nächsten Request, der in der Regel ein Template ist.

# Dateiname : example.py
# Urheberrecht : 2020 Von w3codebox
# Autor durch: de.oldtoolbag.com
# Datum : 2020-08-08
flash(message, category)

hier -

message - Der Parameter ist die tatsächliche Nachricht, die aktualisiert werden soll. category - Der Parameter ist optional. Er kann 'Fehler', 'Information' oder ' Warnung ' sein.

Um eine Nachricht aus der Sitzung zu löschen, ruft das Template die Funktion get_flashed_messages() auf.

# Dateiname : example.py
# Urheberrecht : 2020 Von w3codebox
# Autor durch: de.oldtoolbag.com
# Datum : 2020-08-08
get_flashed_messages(with_categories, category_filter)

Beide Parameter sind optional. Wenn die empfangene Nachricht eine Kategorie hat, ist der erste Parameter ein Tupel. Der zweite Parameter ist sehr nützlich, um spezifische Nachrichten anzuzeigen.

Nachfolgend ist eine Flash-Vorlage, in der eine Nachricht empfangen wurde.

# Dateiname : example.py
# Urheberrecht : 2020 Von w3codebox
# Autor durch: de.oldtoolbag.com
# Datum : 2020-08-08
{% with messages = get_flashed_messages() %}
    {% if messages %}
       {% for message in messages %}
          {{ message }}
       {% endfor %}
    {% endif %}
 {% endwith %}

/” zeigt einen Link zur Anmeldeseite an

# Dateiname : example.py
# Urheberrecht : 2020 Von w3codebox
# Autor durch: de.oldtoolbag.com
# Datum : 2020-08-08
@app.route('/')
 def index():
     return render_template('index.html')

Dieser Link führt den Benutzer zur URL, um das Anmeldeformular anzuzeigen => “/login”。 Beim Absenden wird die Funktion login() die Benutzernamen und Passwörter überprüfen und entsprechend die Meldungen „Erfolg“ oder „Fehler“ anzeigt.

# Dateiname : example.py
# Urheberrecht : 2020 Von w3codebox
# Autor durch: de.oldtoolbag.com
# Datum : 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)

Gibt es einen Fehler, so wird die Anmeldungsvorlage neu angezeigt und eine Fehlermeldung wird angezeigt.

Vorlagendatei: login.html Der Code lautet wie folgt -

# Dateiname : example.py
# Urheberrecht : 2020 Von w3codebox
# Autor durch: de.oldtoolbag.com
# Datum : 2020-08-08
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Flask-Beispiel</title>
 </head>
    <body>
      <h1>Anmeldung</h1>
       {% if error %}
       <p><strong>Fehler:</strong> {{ error }}
       {% endif %}
       <form action="}}/login" method="POST">
          dl>
             <dt>Benutzername:</dt>
             dd>
                <input type="text" name="username" 
                   value="{{request.form.username}}">
             </dd>
             <dt>Passwort:</dt>
             <dd><input type="password" name="password"></dd>
          </dl>
          <p><input type="submit" value="Einloggen"></p>
       </form>
    </body>
 </html>

Wenn das Anmelden erfolgreich ist, wird eine Erfolgsmeldung im Index-Template angezeigt. Der folgende Code ist im Datei( index.html) -

# Dateiname : example.py
# Urheberrecht : 2020 Von w3codebox
# Autor durch: de.oldtoolbag.com
# Datum : 2020-08-08
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Flask Nachrichtensperrung</title>
 </head>
    <body>
          {% with messages = get_flashed_messages() %}
           {% if messages %}
             <ul class="flashes">
             {% for message in messages %}
               <li>{{ message }}</li>/li>
             {% endfor %}
             </ul>
           {% endif %}
         {% endwith %}
       <h1>Flask Message Flashing Beispiel</h1>
       <p>Wollen Sie <a href="{{ url_for('login') }}">
          <b>Einloggen?</b></a></p>
    </body>
 </html>

Der vollständige Quellcode für das Beispiel der Flask-Nachrichtensperrung ist wie folgt dargestellt -

# Dateiname : example.py
# Urheberrecht : 2020 Von w3codebox
# Autor durch: de.oldtoolbag.com
# Datum : 2020-08-08
from flask import Flask, flash, redirect, render_template, request, url_for
 app = Flask(__name__)
 app.secret_key = 'random string'
 @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)

Nachdem Sie den obigen Code ausgeführt haben, sehen Sie wie folgt das Bildschirmfenster.

Wenn Sie auf den Link klicken, wird auf die Anmeldeseite weitergeleitet. Geben Sie Benutzername und Passwort ein -

Klicken AnmeldungKnopf. Eine Nachricht "Sie haben erfolgreich eingeloggt" wird angezeigt.