Как захватить исключение в django rest framework с промежуточным программным обеспечением django? - PullRequest
0 голосов
/ 30 сентября 2018

Промежуточное программное обеспечение 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?

Как правильно сделать?

1 Ответ

0 голосов
/ 30 сентября 2018

Лучший способ сделать это в платформе Django Rest - создать собственный обработчик исключений и заменить обработчик исключений по умолчанию на ваш собственный обработчик.Более подробную информацию об этом вы можете найти в официальной документации: http://www.django -rest-framework.org / api-guide / exceptions / # custom-обработка исключений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...