Daten erstellen, ändern und löschen
Create
from flask import request, redirect, url_for
@app.post("/todos")
def create_todo():
title = (request.form.get("title") or "").strip()
if not title:
return redirect(url_for("index"))
db = get_db()
db.execute("INSERT INTO todos (title) VALUES (?)", (title,))
db.commit()
return redirect(url_for("index"))
Update (erledigt)
@app.post("/todos/<int:todo_id>/toggle")
def toggle(todo_id: int):
db = get_db()
db.execute(
"UPDATE todos SET done = CASE done WHEN 0 THEN 1 ELSE 0 END WHERE id = ?",
(todo_id,),
)
db.commit()
return redirect(url_for("index"))
Delete
@app.post("/todos/<int:todo_id>/delete")
def delete(todo_id: int):
db = get_db()
db.execute("DELETE FROM todos WHERE id = ?", (todo_id,))
db.commit()
return redirect(url_for("index"))
Sicherheitshinweis
- immer
?Platzhalter - nie SQL mit f-String aus User-Text bauen
Rate mal!
Warum POST für delete in Lern-Apps oft ok, REST aber DELETE kennt?
Auflösung
HTML-Formulare senden leicht GET/POST; DELETE kommt später mit JS/API.
Probiere es selbst
Experiment 1
Insert über Formular.
Experiment 2
Toggle.
Experiment 3
Delete.
Übungen
Level 1
INSERT mit ?.
Level 2
Leeren Titel ablehnen.
Level 3
DELETE nur mit passender id.
Level-1-Lösung
db.execute("INSERT INTO todos (title) VALUES (?)", (title,))
Mini-Quiz
CRUD sitzt! Mini-Projekt: Aufgaben-Webapp.