đŻ Ziel dieses Teils
â
Nutzer sehen eine BestÀtigung nach jeder Aktion
â
Login-Fehler oder Registrierung werden freundlich erklÀrt
â
Leere Listen oder andere Hinweise erscheinen direkt im UI
Was ist eine âFlash-Meldungâ?
Eine kurze Nachricht, die nach einer Weiterleitung angezeigt wird.
Wird automatisch beim nÀchsten Seitenaufruf nur einmal angezeigt.
Du brauchst:
flash("Nachricht")â Nachricht merkenget_flashed_messages()â Nachricht anzeigen
Schritt 1: Flask vorbereiten
In deiner app.py, ganz oben:
from flask import flash, get_flashed_messages
â Du brauchst kein Extra-Modul â das ist in Flask schon enthalten.
Schritt 2: Nachrichten erzeugen (Beispiele)
Nach erfolgreichem Login:
flash("Willkommen zurĂŒck, " + user["name"] + "!")
Bei fehlerhaftem Login:
flash("â Benutzername oder Passwort falsch.", "error")
Nach Aufgabe hinzugefĂŒgt:
flash("â
Aufgabe hinzugefĂŒgt.")
Beim Löschen:
flash("đïž Aufgabe gelöscht.")
Schritt 3: Flash-Meldung im Template anzeigen
FĂŒge diesen Block in deine index.html (direkt unter <body> oder Ăberschrift):
{% with nachrichten = get_flashed_messages(with_categories=true) %}
{% if nachrichten %}
<ul class="flash">
{% for kategorie, text in nachrichten %}
<li class="{{ kategorie }}">{{ text }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
Schritt 4: CSS fĂŒr Flash-Meldungen
Erweitere deine style.css:
.flash {
list-style: none;
padding: 0;
margin: 1rem 0;
}
.flash li {
padding: 0.75rem;
border-radius: 6px;
margin-bottom: 0.5rem;
font-weight: bold;
}
.flash li.error {
background: #ffe5e5;
color: #900;
}
.flash li {
background: #e0ffe0;
color: #060;
}
đĄ Du kannst auch weitere Kategorien wie info, warning etc. verwenden.
Schritt 5: Beispiele im Code einsetzen
Login:
if user and check_password_hash(user["passwort"], pw):
session["user_id"] = user["id"]
session["name"] = user["name"]
flash("Willkommen zurĂŒck, " + user["name"] + "!")
return redirect(url_for("startseite"))
else:
flash("â Benutzername oder Passwort falsch.", "error")
Registrierung:
try:
db.execute(...)
flash("â
Registrierung erfolgreich! Jetzt einloggen.")
return redirect(url_for("login"))
except sqlite3.IntegrityError:
flash("â Benutzername bereits vergeben.", "error")
Aufgabe hinzugefĂŒgt:
flash("â
Aufgabe hinzugefĂŒgt.")
Aufgabe gelöscht:
flash("đïž Aufgabe gelöscht.")
Optionale Idee: Wenn keine Aufgaben da sind
In index.html:
{% if aufgaben %}
<ul>...</ul>
{% else %}
<p>đ Du hast noch keine Aufgaben. Starte gleich eine!</p>
{% endif %}
Was du jetzt kannst
| Feature | Technik |
|---|---|
| Einmalige RĂŒckmeldung | flash() + get_flashed_messages() |
| Unterschiedliche Arten | Kategorien wie "error" |
| Bessere UX ohne JavaScript | Nur HTML + CSS + Flask |
Bonus-Ideen
- â± Automatisch nach 3âŻSekunden ausblenden (mit JavaScript)
- đš Verschiedene Farben fĂŒr Info, Warnung, Fehler
- đ ZurĂŒck zur vorherigen Seite bei Fehlern
Schreibe einen Kommentar