今天把 Day 11 的暫時版本改成真正新增資料。
步驟 1:替換 add_media() 函式
在 app.py 找到原本的 add_media(),將整個函式替換為以下版本:
@app.route("/add", methods=["GET", "POST"])def add_media(): if request.method == "POST": title = request.form.get("title", "").strip() media_type = request.form.get("media_type", "") year_text = request.form.get("year", "").strip() genre = request.form.get("genre", "").strip() status = request.form.get("status", "") rating_text = request.form.get("rating", "").strip() notes = request.form.get("notes", "").strip() # 驗證作品名稱 if not title: flash("作品名稱不能空白。", "error") return redirect(url_for("add_media")) # 驗證作品類型 if media_type not in ("movie", "game"): flash("作品類型不正確。", "error") return redirect(url_for("add_media")) # 根據作品類型限制可用狀態 allowed_statuses = { "movie": {"backlog", "watched"}, "game": {"backlog", "playing", "completed"} } if status not in allowed_statuses[media_type]: flash("這個狀態不適用於所選的作品類型。", "error") return redirect(url_for("add_media")) # 將年份文字轉換成整數 year = None if year_text: try:
步驟 2:在表單加入評分和心得
打開 templates/add.html,在狀態欄位後面加上:
個人評分(1–10)
個人心得
同時確認表單仍然是:
步驟 3:加入成功訊息
Day 11 的模板已經有 get_flashed_messages(),因此成功新增後會看到提示。
如果你想讓成功與錯誤訊息看起來不同,在 CSS 加入:
.notice.success {
border: 1px solid #367c58;
}
.notice.error {
border: 1px solid #a74a4a;
}
步驟 4:測試資料是否真的保存