我正在为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()会崩溃?
答案 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休息框架的文档中明确提到。