gpt4 book ai didi

python - 使用 python flask 从数据库中删除行?

转载 作者:IT王子 更新时间:2023-10-29 06:32:14 28 4
gpt4 key购买 nike

我使用的是 flask 框架,似乎无法从数据库中删除行。下面的代码给出了 405 错误:“请求的 URL 不允许使用该方法。”有什么想法吗?

在py中:

@app.route('/delete/<postID>', methods=['POST'])
def delete_entry():
if not session.get('logged_in'):
abort(401)
g.db.execute('delete from entries WHERE id = ?', [postID])
flash('Entry was deleted')
return redirect(url_for('show_entries', post=post))

在 html 中:

<a href="/delete/{{ entry.id }}"><h3>delete</h3></a>

最佳答案

点击 <a href...>delete</a>将发出 GET 请求,而您的 delete_entry 方法仅响应 POST。

您需要 1. 将链接替换为表单和提交按钮,或者 2. 让链接使用 JavaScript 提交隐藏的表单。

这是方法 1:

<form action="/delete/{{ entry.id }}" method="post">
<input type="submit" value="Delete />
</form>

下面是方法 2(使用 jQuery):

$(document).ready(function() {
$("a.delete").click(function() {
var form = $('<form action="/delete/' + this.dataset.id + '" method="post"></form>');
form.submit();
});
});

...

<a href="#delete" class="delete" data-id="{{ entry.id }}">Delete</a>

应该做的一件事是让您的 delete_entry 方法响应 GET。 GET 应该是幂等的(可以安全地重复运行并且不会执行破坏性操作)。 Here's a question更多细节。

关于python - 使用 python flask 从数据库中删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25947251/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com