Teil 23: Aufgaben bearbeiten – direkt im Browser


🎯 Ziel dieses Teils

✅ Jede Aufgabe bekommt einen „Bearbeiten“-Button
✅ Klick öffnet eine kleine Eingabeseite
✅ Der neue Text wird gespeichert und angezeigt
✅ Alles funktioniert einfach, klar und ohne JavaScript


Grundidee

Wir bauen:

  1. Eine neue Route /bearbeiten/<index> → zeigt ein Bearbeitungsformular
  2. Eine zweite Route, die das Formular verarbeitet → ändert den Text und speichert
  3. Einen „Bearbeiten“-Button im HTML

Schritt 1: Bearbeitungsseite anzeigen

In app.py, füge diese Funktion hinzu:

@app.route("/bearbeiten/<int:index>")
def aufgabe_bearbeiten(index):
    if 0 <= index < len(aufgaben):
        aufgabe = aufgaben[index]
        return render_template("bearbeiten.html", index=index, aufgabe=aufgabe)
    return redirect(url_for("startseite"))

Schritt 2: Formular verarbeiten

Füge danach eine zweite Route hinzu:

@app.route("/bearbeiten/<int:index>", methods=["POST"])
def aufgabe_speichern(index):
    neuer_text = request.form.get("text")
    if neuer_text and 0 <= index < len(aufgaben):
        aufgaben[index]["text"] = neuer_text.strip()
        aufgaben_speichern()
    return redirect(url_for("startseite"))

Schritt 3: Neue HTML-Datei bearbeiten.html

Lege in templates/ die Datei bearbeiten.html an:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Aufgabe bearbeiten</title>
</head>
<body>
    <h1>✏️ Aufgabe bearbeiten</h1>

    <form action="/bearbeiten/{{ index }}" method="post">
        <input type="text" name="text" value="{{ aufgabe.text }}" required>
        <button type="submit">💾 Speichern</button>
        <a href="/">Abbrechen</a>
    </form>
</body>
</html>

Schritt 4: Bearbeiten-Button ins index.html

Füge in der Aufgabenanzeige einen neuen Button hinzu:

<a href="/bearbeiten/{{ loop.index0 }}">
    <button>✏️ Bearbeiten</button>
</a>

Zum Beispiel unter dem Text oder neben „Löschen“:

<a href="/loeschen/{{ loop.index0 }}">
    <button>❌ Löschen</button>
</a>
<a href="/bearbeiten/{{ loop.index0 }}">
    <button>✏️ Bearbeiten</button>
</a>

Schritt 5: App starten & testen

python app.py
  1. Öffne deine App im Browser
  2. Klicke bei einer Aufgabe auf „✏️ Bearbeiten“
  3. Ändere den Text → „💾 Speichern“
  4. Der Text ist aktualisiert – und bleibt gespeichert

Was du jetzt kannst

FunktionWie umgesetzt?
Aufgabe anzeigen & editierenZwei Routen mit GET und POST
Formular mit aktuellem Textvalue="{{ aufgabe.text }}"
Änderungen speichernaufgaben[index]["text"] = ...
BenutzerführungKlarer Weg zurück zur Startseite

Was du gelernt hast

  • Formulare mit bestehendem Inhalt anzeigen
  • GET & POST auf derselben Route verarbeiten
  • Einfache Datenbearbeitung in Flask
  • Dynamische Template-Daten in Formularfeldern

Bonus-Ideen

  • ⏳ Letzte Änderung speichern (Datum)
  • 🔒 Aufgaben sperren oder freigeben
  • 🖼️ Icons statt Buttons verwenden (z. B. mit Font Awesome)

Kommentare

Schreibe einen Kommentar

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