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

标签 python sqlite flask http-status-code-405

我使用的是 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/

相关文章:

python - 如何将时间戳转换为 HH :MM:SS format using python and graph the information?

python - 获取计算机硬件信息

python - 如何从 LineString 未排序列表创建多边形

python - 将 python 变量传递给 sql

ios - 来自 sqlite 数据库的 NSMutableArray addObject 不起作用

python - Flask-SQLAlchemy 中的 LocalProxy 对象

python - 从 Bash 文件运行 Python 脚本导致导入错误

sqlite 从两个具有完全相同模式的数据库中追加两个表

javascript - flask url_for Javascript 中的 URL

python - 将 Flask-mail 与应用程序工厂一起使用 - 将邮件属性添加到应用程序对象