Flask SQLAlchemy 中的表单删除方法不起作用

form delete method in flask SQLAlchemy not working

我试图让页面显示个人详细信息,底部有一个按钮,用于从数据库中删除个人并定向到主页。问题是由于某种原因,删除方法不起作用..

@app.route('/venues/<int:venue_id>')
def show_venue(venue_id):
  data = Venue.query.get(venue_id)
  return render_template('pages/show_venue.html', venue=data)


@app.route('/venues/<int:venue_id>', methods=['DELETE'])
def delete_venue(venue_id):

    try:
        Venue.query.filter_by(id=venue_id).delete()
        db.session.commit()

    except Exception as e:
        print(e)
        error = True
        db.session.rollback()
    finally:
        db.session.close()
        if not error:
            flash('Venue was successfully deleted!')
            return render_template('pages/home.html')
        else:
            flash('An error occurred. Venue ' +
                  request.form['name'] + ' could not be deleted.')
        return None

在HTML里面:

...
    <form class="form" method="DELETE" action="/venues/{{venue.id}}">
        <input type="submit" value="Delete Venue">
    </form>
...

控制台没有显示任何错误,但实际上什么也没做。只是 returns 到同一页面。 感谢帮助

我认为对于 delete 函数,您需要将要删除的内容作为函数的参数传递。

item_to_be_deleted =  Venue.query.filter_by(id=venue_id)
db.session.delete(item_to_be_deleted)

已编辑: 例如,如果您通过 Postman 发送查询,而不是使用 html-form,您可以删除条目吗?

根据评论中链接的另一个 post,Web 浏览器无法发送 PUT 和 DELETE 方法。他们只发送 GET 和 POST。所以这可能与此有关!!

如果您更改浏览器传递的方法,它可能会成功!