我一直在关注上面的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']
"if serializer.is_valid():"
实际上做了什么?是检查消息中的数据是否与用户配置文件中的数据匹配?我之前从未使用过序列化程序,可以使用它的解释。
由于
答案 0 :(得分:1)
在将数据写入数据库之前,需要在反序列化过程中调用is_valid
。 is_valid
执行validation输入数据并确认此数据包含所有必填字段,并且所有字段都具有正确的类型。如果验证过程成功is_valid
设置validated_data
字典,该字典用于在DB中创建或更新数据。否则,序列化程序的属性errors
将包含有关输入数据中的错误的信息,您可以在视图中将此信息作为HTTP响应发送。