Python flask УДАЛИТЬ запрос - PullRequest
       5

Python flask УДАЛИТЬ запрос

0 голосов
/ 29 апреля 2020

Я занимаюсь разработкой приложения Python и использую flask, и это моя функция 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.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Вы делаете GET-запрос, но ваш flask бэкэнд ожидает запрос DELETE для этой конечной точки /DeleteMessage. Вы можете изменить метод запроса на GET @app.route('/DeleteMessage', methods=['GET']), и он будет работать, но это противоречит стандарту http.

Вы можете прочитать о том, как отправить запрос DELETE в этом вопросе: Как отправить запрос DELETE?

Дополнительная информация:

https://tools.ietf.org/html/rfc2616#section -9,3 https://www.restapitutorial.com/lessons/httpmethods.html

0 голосов
/ 29 апреля 2020

Браузеры поддерживают PUT и DELETE только при запросе AJAX, но не при отправке формы HTML. HTML тег формы будет разрешать только методы GET и POST .

В вашем случае вы можете отправить запрос ajax следующим образом:

$.ajax({
url: '{{url_for("DeleteMessage")}}',
type: 'DELETE',
success: function(result) {
    // write something if needed
}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...