Пользовательский обработчик ошибок Django rest_framework

#python #django #error-handling

#python #django #обработка ошибок

Вопрос:

Я хочу написать пользовательский обработчик ошибок django, как в пользовательском обработчике ошибок flask. Предположим, у меня есть 100 API, которые каждый раз получают одну и ту же ошибку, скажем

 json.decoder.JSONDecodeError
 

Пример кода

 def post(self, request):
    if not request: return Response({"message": "Please enter credentials"})
    input_param = json.load(request)
    print(input_param)
    return "something"
 

Приведенный выше код вернет json.decoder.JSONDecodeError, если в post-запросе не передаются параметры.

В flask это можно обработать, написав пользовательский обработчик ошибок, например

 
@app.errorhandler(json.decoder.JSONDecodeError)
def handle_marshmallow_validaton_errors(err):
    
    return jsonify({"error": "Bad request"}), 400
 

Есть ли в django какой-либо способ написать пользовательские обработчики ошибок

Заранее спасибо

Ответ №1:

Я думаю, вы можете использовать пользовательский обработчик исключений DRF https://www.django-rest-framework.org/api-guide/exceptions/#custom-exception-handling . вы можете использовать его для проверки возникшего исключения и возврата правильного ответа.