🎯 Ziel dieses Teils
✅ Aufgaben in eine Datei schreiben
✅ Aufgaben beim Start aus der Datei lesen
✅ Weiterarbeiten, als wäre nichts gewesen
Warum JSON?
- JSON = JavaScript Object Notation
- Es ist ein Textformat für strukturierte Daten
- Python versteht es direkt – du brauchst kein zusätzliches Modul installieren
Beispiel JSON-Datei:
[
{"text": "Wäsche waschen", "erledigt": false},
{"text": "Python lernen", "erledigt": true}
]
Das sieht fast genauso aus wie Python-Listen mit Dictionaries.
Projektstruktur
Deine Ordnerstruktur bleibt so:
todo-web/
├── app.py
├── aufgaben.json ← NEU (automatisch erstellt)
└── templates/
└── index.html
Schritt 1: json
importieren (in app.py
)
Ganz oben:
import json
import os
Schritt 2: Speicher-Funktionen hinzufügen
Füge unter deine Aufgabenliste folgenden Code ein:
DATEINAME = "aufgaben.json"
def aufgaben_laden():
global aufgaben
if os.path.exists(DATEINAME):
with open(DATEINAME, "r", encoding="utf-8") as f:
aufgaben = json.load(f)
else:
aufgaben = []
def aufgaben_speichern():
with open(DATEINAME, "w", encoding="utf-8") as f:
json.dump(aufgaben, f, ensure_ascii=False, indent=2)
Schritt 3: app.py
anpassen
1. Aufgabenliste entfernen (sie kommt aus der Datei):
# aufgaben = [...]
Stattdessen wird sie beim Start geladen:
aufgaben = []
aufgaben_laden()
2. Immer wenn du etwas änderst → speichern
In der Funktion aufgabe_hinzufuegen()
:
@app.route("/hinzufuegen", methods=["POST"])
def aufgabe_hinzufuegen():
text = request.form.get("text")
if text and text.strip():
neue_aufgabe = {"text": text.strip(), "erledigt": False}
aufgaben.append(neue_aufgabe)
aufgaben_speichern()
return redirect(url_for("startseite"))
Schritt 4: App starten und testen
python app.py
- Füge im Browser eine Aufgabe hinzu
- Schau in den Projektordner – du siehst
aufgaben.json
- Öffne die Datei: Die Aufgabe steht drin
- Stoppe und starte Flask neu – die Aufgabe ist noch da 🎉
Was du jetzt kannst
Aktion | Werkzeug |
---|---|
Datei schreiben | json.dump(...) |
Datei lesen | json.load(...) |
Existenz prüfen | os.path.exists(...) |
Automatisch laden/speichern | Eigene Funktionen |
Was du gelernt hast
- Wie man Python-Daten als JSON speichert
- Wie man beim Start eine Datei lädt
- Wie man Änderungen sofort speichert
Bonus (wenn du willst)
- 🔁 Aufgaben beim Speichern sortieren (z. B. erledigte unten)
- 🕒 Erstellungsdatum mit speichern (
"created": "2025-09-15"
) - ✅ Aufgaben abhaken und speichern (Teil 19!)
Schreibe einen Kommentar