首页 > 解决方案 > DRF:如何在解析期间为 UnsupportedMediaType 异常定义自定义错误消息

问题描述

问题

当 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(我知道我可以使用字段的属性(此处的文档)在序列化程序类中定义自定义序列化验证错误消息。但是,我找不到解析器的任何类似内容;可能除了创建自定义解析器。这确实是合适的方式去吗?)

标签: djangoerror-handlingdjango-rest-framework

解决方案


推荐阅读