Django 序列化程序:is_valid 实际上做了什么?

Mic*_*rce 4 django serialization django-rest-framework

git repodjango 教程

我一直在关注上面的 django 项目,该项目着眼于创建面对面的聊天。我遇到过这部分:

def message_list(request, sender=None, receiver=None):
    ...

    elif request.method == 'POST':
        print('posting')
        data = JSONParser().parse(request)
        print(data)
        serializer = MessageSerializer(data=data)
        print(serializer)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data, status=201)

class MessageSerializer(serializers.ModelSerializer):
    sender = serializers.SlugRelatedField(many=False, slug_field='email', queryset=User.objects.all())
    receiver = serializers.SlugRelatedField(many=False, slug_field='email', queryset=User.objects.all())

    class Meta:
        model = Message
        fields = ['sender', 'receiver', 'message', 'timestamp']
Run Code Online (Sandbox Code Playgroud)

什么是"if serializer.is_valid():"真正做到?是否检查消息中的数据与用户配置文件中的数据是否匹配?我以前从未使用过序列化程序,可以使用它的解释。

谢谢

nev*_*ner 11

is_valid在将数据写入数据库之前,您需要在反序列化过程中调用。is_valid执行输入数据的验证并确认此数据包含所有必填字段并且所有字段都具有正确的类型。如果验证过程成功,则is_valid设置validated_data用于在 DB 中创建或更新数据的字典。否则,序列化程序的属性errors将包含有关输入数据错误的信息,您可以将此信息作为 HTTP 响应发送到您的视图中。