1. 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串
2. 反序列化,把客户端发送过来的数据,经过request以后变成字典,序列化器可以把字典转成模型
3. 反序列化,完成数据校验功能
Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。
序列化器基本流程:
from rest_framework import serializers from .models import Student class StudentSerializer(serializers.Serializer): # 学生信息序列化器 #1.转换的字段说明 #客户端字段=serializers.字段类型(选项=选项值) #2.如果当前的序列化器集成的是ModelSerializer,需要声明调用的模型信息 # class Meta: # model = 模型 # fields = ["字段1","字段2","字段3",...] #3.验证代码的对象方法 # def validate(self,attrs):#名字固定叫validate # pass # return attrs # def validate_<字段名>(self,data):#方法名必须是validate_<字段名>,否则序列化器不识别 # pass # return data #4.模型操作的方法 # def create(self,validate_data):#添加数据操作,自动实现从字典变成模型对象 # pass # def update(self,instance,validate_data): # pass
序列化器:
from rest_framework import serializers from .models import Student class StudentSerializer(serializers.Serializer): #1.转换的字段说明 id=serializers.IntegerField() name=serializers.CharField() sex=serializers.BooleanField() age=serializers.IntegerField() description=serializers.CharField()
视图:
序列化一个对象:
from django.views import View from .models import Student from .serializers import StudentSerializer from django.http.response import JsonResponse class StudentView(View): def get(self,request): #序列化一个模型对象 #1.获取数据集 instance=Student.objects.first() #2.实例化序列化器,得到序列化对象 serializer=StudentSerializer(instance=instance) #3.调用序列化对象的data属性获取数据 data=serializer.data #4.响应数据 return JsonResponse(data=data,status=200,safe=False)#返回结果是字典
序列化多个对象:
from django.views import View from .models import Student from .serializers import StudentSerializer from django.http.response import JsonResponse class StudentView(View): def get(self,request): #序列化多个模型对象 #1.获取数据集 instance=Student.objects.all() #2.实例化序列化器,得到序列化对象 #序列化包含多个数据的查询集QuerySet,添加参数many=True serializer=StudentSerializer(instance=instance,many=True) #3.调用序列化对象的data属性获取数据 data=serializer.data #4.响应数据 return JsonResponse(data=data,status=200,safe=False)#返回结果是字典
路由:
from django.urls import path from . import views # 路由列表 urlpatterns = [ path("students/",views.StudentView.as_view()), ]
标签:serializers,对象,模型,instance,import,序列化,data From: https://www.cnblogs.com/fuck-Innovative-training/p/16638874.html