一、简单定义
序列化:将数据库数据转化为前端需要格式(默认json)返回。 反序列化:将前端数据转化给模型类对象,保存到数据库中。
二、序列化简单用法
1、传统方式:
from API import models
class RolesView(APIView):
""""
角色表演示序列化
"""
authentication_classes = []
parser_classes = [JSONParser, FormParser]
def get(self,request,*args,**kwargs):
#方式一,传统方式
roles = models.Role.objects.all().values('id','title')
roles = list(roles)
return JsonResponse(roles,safe=False)
2、drf方式:定义一个序列化器(继承与Serializer的类)类属性基本和models一模一样。但是他还支持定义一个属性加进去,下面讲。
from rest_framework import serializers
from API import models
import json
class RolesSerializer(serializers.Serializer):
id = serializers.IntegerField(label='ID',read_only=True)
title = serializers.CharField(label='名称',max_length=32)
class RolesView(APIView):
""""
角色表演示序列化
"""
authentication_classes = []
parser_classes = [JSONParser, FormParser]
def get(self,request,*args,**kwargs):
# #方式一,传统方式
# roles = models.Role.objects.all().values('id','title')
# roles = list(roles)
# return JsonResponse(roles,safe=False)
#方式二,drf继承Serializer
roles = models.Role.objects.all() #数据库查询
ser = RolesSerializer(instance=roles,many=True) #注意模型all()方法返回的是多条数据many必须为True
res = json.dumps(ser.data,ensure_ascii=False) #用python内置json工具转化
return HttpResponse(res) #注意此处是HttpResponse
序列化器接收两个参数默认都为空,instance(序列化使用)data(反序列化使用)