Я имею следующий вид (с использованием рамки Django REST):Как обрабатывать исключения в представлениях Django?
class MyDataView(APIView):
def post(self, request, format=None):
my_data = MyData()
try:
result = my_data.save(request.data)
except:
exception_type, exception_value = sys.exc_info()[0:2]
error = exception_type.__name__ + ': ' + str(exception_value)
return Response(str(error), status=status.HTTP_400_BAD_REQUEST)
else:
return Response(result, status=status.HTTP_201_CREATED)
В общем, я знаю, что это плохая практика, чтобы использовать общий обработчик исключения, если это не в коде верхнего уровня (для обеспечения красиво отформатированная ошибка для пользователя).
В этом случае возврат 400 с полезной нагрузкой с ошибкой дает мне дополнительную информацию с пользовательской стороны об ошибке. Другим вариантом, который я рассматриваю здесь, является удаление блока try/except, так что 201 будет возвращен при успешном завершении и 500 на ошибке.
Какова наилучшая практика в этом случае?