Промежуточное программное обеспечение Django имеет хук process_exception
, который можно использовать для захвата исключений и обработчика.
Но при использовании перезапуска Django существует некоторая проблема
class ExceptionHandler(MiddlewareMixin):
@staticmethod
def process_exception(request, exception):
if isinstance(exception, ValidationError):
return Response(data=exception.messages, status=status.HTTP_400_BAD_REQUEST)
Например, япопробуйте использовать вышеупомянутое промежуточное ПО для захвата ValidationError
и возврата HTTP 400
, но он не будет работать и поднимется ниже уровня ошибки
AssertionError: .accepted_renderer not set on Response
Оказывается, что слой представления оставшейся структуры будетдобавьте .accepted_renderer
к ответу.
Если я обработаю исключение вне представления.Этот атрибут будет пропущен и вызовет другое исключение.
Итак, мой вопрос: неправильно ли обрабатывать исключения в промежуточном программном обеспечении при использовании rest-framework django?
Как правильно сделать?