Teil 18: Aufgaben speichern und laden – mit JSON-Datei


🎯 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
  1. Füge im Browser eine Aufgabe hinzu
  2. Schau in den Projektordner – du siehst aufgaben.json
  3. Öffne die Datei: Die Aufgabe steht drin
  4. Stoppe und starte Flask neu – die Aufgabe ist noch da 🎉

Was du jetzt kannst

AktionWerkzeug
Datei schreibenjson.dump(...)
Datei lesenjson.load(...)
Existenz prüfenos.path.exists(...)
Automatisch laden/speichernEigene 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!)

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert