视图类:
#更新用户信息的视图类如何调用序列化器
user = models.User.objects.filter(id=2)
ser = seralizer.User_Serialzer(instance=user,data=request.data)
#instance 传递的要操作的数据对象,data传递的是要修改的数据
#新增数据的视图类如何调用序列化器
ser = seralizer.User_Serializer(data=request.data)
if ser.is_valid:
#走到这里代表通过校验了
序列化器.py
from rest_framework import serializers
from rest_framework.exceptions import ValidationError
from testapp import models
class User_Serialzer(serializers.Serializer):
name = serializers.CharField()
password=serializers.CharField()
age = serializers.CharField()
def update(self, instance, validated_data):
#instance是要被修改的对象
#validated_data是前端传递来的修改的数据,
#这里需要我们自己一个一个数据进行对应修改
instance.name = validated_data.get('name')
instance.password = validated_data.get('password')
instance.age = validated_data.get('age')
instance.save()
#这个修改就是数据对象修改的三步走的方法,
'''
1 拿到对象(实例化对象)
2 通过属性方法修改值
3 必须使用save来保存
'''
return instance
#创建数据,需要重写create方法
def create(self, validated_data):
#validated_data就是前端传递过来且校验通过的字典
obj=models.UserS.objects.create(**validated_data)
if obj:
return validated_data
else:
raise ValidationError('创建数据失败')
什么时候是序列化或反序列化:
1、拿到数据库中的数据对象,传递给序列化器,这个过程是序列化。就是读取数据库的数据。
2、前端收集到数据传递给后端,先经过序列化器基本校验、钩子函数校验,再写入到数据库。这是反序列化的过程。