Zum Hauptinhalt springen

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

Mini-QuizWie schuetzt man vor SQL-Injection grundlegend?

CRUD sitzt! Mini-Projekt: Aufgaben-Webapp.