【发布时间】:2021-11-23 09:24:53
【问题描述】:
我的 CS50 webapp 最终项目需要帮助,我无法使用按钮从 SQLite (phpLiteAdmin) 表中删除一行。
[如下所示,但按钮不起作用]
这里是index.html中的表格代码:
<table>
<thead>
<tr>
<th>Word</th>
<th>Translation</th>
<th> </th>
</tr>
</thead>
<tbody>
{% for word in words %}
<tr>
<td>{{ word.kelime }}</td>
<td>{{ word.ceviri }}</td>
<td>
<button class="btn btn-primary" onclick="delete({{ word.id }})" type="delete">Delete</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
这是我在 application.py 中所做的:
@app.route("/", methods=["GET", "POST"])
def index():
if request.method == "POST":
kelime = request.form.get("kelime")
ceviri = request.form.get("ceviri")
db.execute("INSERT INTO words (kelime, ceviri) VALUES (?,?)", kelime, ceviri)
return redirect("/")
else:
words = db.execute("SELECT * FROM words")
return render_template("index.html", words=words)
def delete(id):
if request.method == "POST":
db.execute("DELETE FROM words WHERE id = ?", id)
return redirect("/")
我不知道我做错了什么,我是编码新手,所以如果你们能为我简化它会很棒。提前谢谢你
【问题讨论】:
-
将您的代码粘贴为文本而不是屏幕截图
-
您的按钮正在尝试调用名为
delete的 Javascript 函数。你有这样一个函数可以在你的应用程序中创建一个 POST 请求吗?我猜这是问题的根源——您希望按钮调用您的 Python 代码。如果您确实有delete功能,请发布。 -
您并不想每次重定向回索引时都插入两个新词。插入选项应该是一个单独的请求。否则,一旦您删除,浏览器将重定向回索引,您将重新插入。
标签: python sql sqlite flask cs50