🎯 Ziel dieses Teils
✅ Zeige Anzahl offener und erledigter Aufgaben
✅ Möglichkeit, nur offene Aufgaben anzuzeigen
✅ Sortiere Aufgaben: offen zuerst, dann erledigt
✅ Alles bleibt im Browser klickbar und einfach
Schritt 1: Aufgaben beim Anzeigen sortieren
In deiner app.py, bearbeite die startseite()-Funktion:
@app.route("/")
def startseite():
# Sortieren: offen (False) vor erledigt (True)
sortierte_aufgaben = sorted(aufgaben, key=lambda a: a["erledigt"])
return render_template("index.html", aufgaben=sortierte_aufgaben)
Das sorgt dafür, dass nicht erledigte Aufgaben oben stehen.
Schritt 2: Offene & erledigte Aufgaben zählen
In startseite() erweitere den Rückgabe-Befehl:
@app.route("/")
def startseite():
sortierte_aufgaben = sorted(aufgaben, key=lambda a: a["erledigt"])
anzahl_offen = sum(1 for a in aufgaben if not a["erledigt"])
anzahl_erledigt = sum(1 for a in aufgaben if a["erledigt"])
return render_template(
"index.html",
aufgaben=sortierte_aufgaben,
offen=anzahl_offen,
erledigt=anzahl_erledigt
)
Schritt 3: Anzeige in index.html
Zeige die Zahlen über der Liste an:
<h2>Status</h2>
<p>
🔄 Noch offen: {{ offen }} <br>
✅ Erledigt: {{ erledigt }}
</p>
Das kannst du z. B. zwischen Überschrift und Liste setzen.
Optional: Nur offene anzeigen (per Filter)
Wenn du möchtest, kannst du einen Link einbauen:
<p>
<a href="/?filter=offen">Nur offene anzeigen</a> |
<a href="/">Alle anzeigen</a>
</p>
Und in app.py änderst du startseite():
from flask import request
@app.route("/")
def startseite():
filter_wert = request.args.get("filter")
if filter_wert == "offen":
gefiltert = [a for a in aufgaben if not a["erledigt"]]
else:
gefiltert = aufgaben
sortierte_aufgaben = sorted(gefiltert, key=lambda a: a["erledigt"])
anzahl_offen = sum(1 for a in aufgaben if not a["erledigt"])
anzahl_erledigt = sum(1 for a in aufgaben if a["erledigt"])
return render_template(
"index.html",
aufgaben=sortierte_aufgaben,
offen=anzahl_offen,
erledigt=anzahl_erledigt
)
Damit kannst du zwischen „alle“ und „nur offene“ Aufgaben umschalten – ganz ohne JavaScript.
Was du jetzt kannst
| Funktion | Technik dahinter |
|---|---|
| Aufgaben zählen | sum(...) |
| Liste sortieren | sorted(..., key=...) |
| Aufgaben filtern | request.args.get(...) |
| Daten an HTML übergeben | render_template(...) |
| HTML anzeigen | {{ offen }}, {{ erledigt }} |
Was du gelernt hast
- Filterung & Sortierung mit Python-Logik
- Übergabe mehrerer Variablen an HTML
- Dynamische Anzeige im Template
- GET-Parameter (
?filter=offen) auswerten
Bonus-Ideen für Teil 22
- 🔄 Aufgaben wieder auf „offen“ setzen (Rückgängig)
- 📅 Fälligkeitsdatum anzeigen oder sortieren
- 🔍 Suchfeld nach Stichworten
- 🎨 Besseres Layout mit Farben oder CSS
Schreibe einen Kommentar