【问题标题】:Python flask DELETE requestPython烧瓶删除请求
【发布时间】:2020-04-29 16:25:48
【问题描述】:

我正在开发一个 Python 应用程序并使用烧瓶,这是我的 DELETE 函数:

@app.route('/DeleteMessage', methods=['DELETE'])
def DeleteMessage():
    messages = Message.query.all()
    application_id = request.args.get('application_id')
    if application_id:
        messages.filter_by(user_id=application_id)
    session_id = request.args.get('session_id')
    if session_id:
        messages.filter_by(session_id=session_id)    
    message_id = request.args.get('message_id')
    if message_id:
        messages = message.filter_by(message_id=message_id)  
    db.session.delete(messages)
    db.session.commit()
    return 'ok'

当我尝试运行它时,它会向我发送这样的错误消息:

Method Not Allowed
The method is not allowed for the requested URL.

【问题讨论】:

标签: python flask


【解决方案1】:

浏览器仅支持 AJAX 请求的 PUT 和 DELETE,但不支持 HTML 表单提交。 HTML 表单标签将只允许 GET 和 POST 方法。

在你的情况下,你可以像这样发送一个 ajax 请求,

$.ajax({
url: '{{url_for("DeleteMessage")}}',
type: 'DELETE',
success: function(result) {
    // write something if needed
}
});

【讨论】:

    【解决方案2】:

    您发出 GET 请求,但您的烧瓶后端在该端点 /DeleteMessage 上等待 DELETE 请求。您可以将请求方法更改为GET @app.route('/DeleteMessage', methods=['GET']),它会起作用,但它与http标准相反。

    您可以在这个问题中了解如何发送 DELETE 请求:How to send DELETE request?

    附加信息:

    https://www.rfc-editor.org/rfc/rfc2616#section-9.3 https://www.restapitutorial.com/lessons/httpmethods.html

    【讨论】:

    • 我试过了:@app.route('/DeleteMessage', methods = ['GET']) 但是我收到这样的错误信息:sqlalchemy.orm.exc.UnmappedInstanceError: Class 'flask_sqlalchemy.BaseQuery ' 未映射
    • 请更新问题并包含您的模型和数据库引擎的代码。
    猜你喜欢
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    相关资源
    最近更新 更多