标签:validated instance 添加 序列 import 序列化 data serializer
前端传到后端需要反序列化,后端传到前端需要序列化
正常需要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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。