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

时间:2015-03-27 12:21:43

标签: django serialization django-rest-framework

我正在为post发布django-rest-framework API,继承APIView。我使用的是序列化程序,它继承了djangos ModelSerializer。在帖子的开头,我尝试验证帖子,例如:

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

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

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。这是由于序列化程序中的语法错误。显然,当您定义一个继承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休息框架的文档中明确提到。

相关问题