【问题标题】:form delete method in flask SQLAlchemy not working烧瓶 SQLAlchemy 中的表单删除方法不起作用
【发布时间】:2023-04-04 20:20:01
【问题描述】:

我正在尝试让页面显示人员详细信息,并在底部使用按钮从数据库中删除人员并指向主页。问题是由于某种原因删除方法不起作用..

@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>
...

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

【问题讨论】:

    标签: python flask sqlalchemy flask-sqlalchemy flask-wtforms


    【解决方案1】:

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

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

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

    根据 cmets 中链接的其他帖子,Web 浏览器无法发送 PUT 和 DELETE 方法。他们只发送 GET 和 POST。所以这可能与此有关!

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

    【讨论】:

    • 改成 ven = Venue.query.get(venue_id) db.session.delete(ven) db.session.commit().. 但还是一样
    • 我认为问题不在查询中,因为它没有显示错误闪烁,所以我猜它无法到达路线
    • 不使用html-form,例如,如果您通过邮递员发送查询,您可以删除该条目吗?根据另一个帖子:stackoverflow.com/questions/55320031/…,Web 浏览器不能发送 PUT 和 DELETE 方法。他们只发送 GET 和 POST。所以这可能与此有关!
    • 你是对的!我将方法更改为 POST,它就像魅力一样工作......谢谢! (请将您的回复放在单独的答案中,以便我将其标记为正确)
    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多