serializer.is_valid() 崩溃,500 内部服务器错误

serializer.is_valid() crashes, 500 internal server error

我正在为 post 制作一个 django-rest-framework API,继承 APIView。我正在使用继承 djangos ModelSerializer 的序列化程序。在post开头,我尝试验证post,例如:

serializer = ExampleSerializerPOST(data=request.DATA)
if not serializer.is_valid():
    return Response(serializer.errors, 400)

我试图在不发送任何数据的情况下测试 post。我预计它会 return 400 因为序列化程序无效。但是相反,我得到 500,内部服务器错误?为什么?我已经检查过了,它在 serializer.is_valid() 中崩溃了。有件事我显然不明白。 is_valid() 在什么情况下会崩溃?

我解决了这个问题。这是由于序列化程序中的语法错误。显然,当您定义一个继承了 ModelSerializer 的序列化程序时,您不能放置一个只有 field = 'message' 的字段。我拥有的是:

class ExampleSerializerPOST(serializers.ModelSerializer)

    class Meta:
        model = ExampleModel
        fields = 'message'

这导致了 500 内部错误。只处理一个字段时有效的是:

class ExampleSerializerPOST(serializers.ModelSerializer)

    class Meta:
        model = ExampleModel
        fields = ('message',)

我知道太蹩脚了。您不仅需要括号,还需要逗号。这很令人困惑,因为我确实尝试了几次不使用逗号。这应该在 Django 休息框架的文档中明确提到。