Преобразование исключений запросов python в исключения API django-rest-framework

Я разрабатываю REST API с использованием django-rest-framework, который должен взаимодействовать со сторонним API. Я использую requests для взаимодействия с этим сторонним API. Некоторые повторяющиеся шаблоны, которые я получаю в своем коде - это выполнение запроса от обработчика APIView


def calculate_order(order):

        url = f"https://api.anotherservice.com/orders/calculate/"

        try:
            response = requests.post(url, json=order.data)
            response.raise_for_status()
            # TODO: handle errors, just printing and re-raising for now
        except requests.exceptions.HTTPError as errh:
            raise errh
        except requests.exceptions.ConnectionError as errc:
            print(errc)
            raise errc
        except requests.exceptions.Timeout as errt:
            print(errt)
            raise errt
        except requests.exceptions.RequestException as err:
            print(err)
            raise err

        return response.json()

# ... In my view

    def post(self, request, *args, **kwargs):

        # ... Some preprocessing code here

        order_calculated = calculate_order(order)

        return Response(order_calculated, status=HTTP_200_OK)

DRF реализует механизм, который удерживает

  • Подклассы APIException, возникающие внутри фреймворка REST.
  • Исключение в Django Http404.
  • PermissionDenied исключение из правил.

Я хотел бы узнать, существует ли пакет для преобразования исключений запросов в объекты исключений, которые может обрабатывать DRF. Также я буду рад узнать любые рекомендации о том, как это должно быть реализовано (лучшие практики).

Я гуглил, но термины с "Django" и "запросы" выдают результаты в основном по самому Django.

Вернуться на верх