#django #error-handling #django-rest-framework
#django #обработка ошибок #django-rest-framework
Вопрос:
Вопрос
Какой самый простой способ определить и вернуть пользовательское текстовое сообщение об ошибке, когда синтаксический анализатор Django Rest Framework выдает ошибку «Неподдерживаемый тип носителя»?
Некоторый контекст
У меня есть следующий APIView для обработки POST-вызова:
class UploadView(APIView):
parser_classes = [MultiPartParser, ]
def post(self, request):
# Question: Can this blob be simplied?
if not request.content_type.startswith("multipart/form-data;"):
msg = f"Expected content-type: multipart/form-data. But got: {request.content_type}"
return Response(data=msg, status=status.HTTP_415_UNSUPPORTED_MEDIA_TYPE)
serializer = ...
...
return Response(status=status.HTTP_204_NO_CONTENT)
Как вы можете видеть, я проверяю тип содержимого, и, если не так, как ожидалось, я отвечаю сообщением 415 с указанием желаемого типа содержимого. Но этот подход кажется не совсем правильным. Я думаю, что обработка и пользовательское сообщение относятся к логике синтаксического анализатора. Есть ли лучший способ сделать это?
(Я знаю, что могу определять пользовательские сообщения об ошибках проверки сериализации в классах сериализаторов, используя error_messages
свойство поля (документы здесь). Однако я не смог найти ничего подобного для синтаксического анализатора; кроме, вероятно, создания пользовательского синтаксического анализатора. Это действительно подходящий путь?)