序列化器:反序列换-添加和更新数据操作
作者:互联网
前端传到后端需要反序列化,后端传到前端需要序列化
正常需要serializer两次:
from django.views import View from .models import Student from .serializers import StudentSerializer from django.http.response import JsonResponse import json class StudentView(View): def get(self,request): #反序列化,验证完成之后添加数据入库 #1.获取数据 #data=json.dumps(request.body) #模拟来自客户端的数据 data={ "name":"sada", "age":12, "sex":True, "classmate":"900", "description":"sadasda", } #2.实例化序列化器,得到序列化对象 serializer=StudentSerializer(data=data)#前端传给后端要反序列化 #3.调用序列化器进行数据验证 serializer.is_valid(raise_exception=True)#验证失败抛出异常 #4.获取验证后的结果 data=serializer.validated_data #5.操作数据库 student=Student.objects.create(**data) serializer=StudentSerializer(instance=student)#后端传给前端要序列化 #6.返回结果 return JsonResponse(serializer.data,status=201)
调用create():
from django.views import View from .models import Student from .serializers import StudentSerializer from django.http.response import JsonResponse import json class StudentView(View): def get(self,request): #反序列化,验证完成之后添加数据入库 #1.获取数据 #data=json.dumps(request.body) #模拟来自客户端的数据 data={ "name":"sadass", "age":12, "sex":True, "classmate":"900", "description":"sadasda", } #2.实例化序列化器,得到序列化对象 serializer=StudentSerializer(data=data)#前端传给后端要反序列化 #3.调用序列化器进行数据验证 serializer.is_valid(raise_exception=True)#验证失败抛出异常 #4.获取验证后的结果,操作数据库 serializer.save()#会根据实例化序列化器的时候是否传入instance来自动调用create或update方法 #5.返回结果 return JsonResponse(serializer.data,status=201)#save自动补充了intance,data里面就会有id
def create(self,validated_data):#添加数据操作,自动实现从字典变成模型对象 student=Student.objects.create(**validated_data) return student
调用update():
from django.views import View from .models import Student from .serializers import StudentSerializer from django.http.response import JsonResponse import json class StudentView(View): def get(self,request): #反序列化,验证数据后更新入库 #1.根据访问的url地址获取pk pk=5 try: student=Student.objects.get(pk=pk) except Student.DoseNotExist: return JsonResponse({"errors":"当前学生不存在"},status=404) #2.接收客户端提交的修改数据 #模拟来自客户端的数据 data={ "name":"sadas萨顶顶s", "age":12, "sex":True, "classmate":"900", "description":"sadasda", } #3.实例化序列化对象 serializer=StudentSerializer(instance=student,data=data)#更新需要传两个参数 #4.验证数据 serializer.is_valid(raise_exception=True) #5.入库 serializer.save() #6.返回结果 return JsonResponse(serializer.data,status=201)
def update(self,instance,validated_data): instance.name=validated_data["name"] instance.sex=validated_data["sex"] instance.age=validated_data["age"] instance.description=validated_data["description"] instance.classmate=validated_data["classmate"] instance.save()#调用模型对象的save,和serializer.save不是一个方法 return instance
标签:validated,instance,添加,序列,import,序列化,data,serializer 来源: https://www.cnblogs.com/fuck-Innovative-training/p/16640186.html