序列化用于对用户请求数据进行验证和数据进行序列化(为了解决queryset序列化问题)。
那什么是序列化呢?序列化就是把对象转换成字符串,反序列化就是把字符串转换成对象
Django 序列化
serialze 只能做序列化,
from django.core.serializers import serialize
publish_list=Publish.objects.all()
#方式1: Django的序列化组件
# ret=serialize("json",publish_list)
我们用postman 帮我们提交数据
restframework 序列化(不只做序列化,可以集成)
如果是浏览器就是看到这个页面,如果是其他ajax就显示数据
具体代码
一,# 自定义序列化组件
Serializers:
from rest_framework import serializers #先把字段写出来 class BookSerializers(serializers.Serializer): title=serializers.CharField() price=serializers.CharField() publishDate=serializers.DateField() # 针对一对多 publish=serializers.CharField(source="publish.name") publish_email=serializers.CharField(source="publish.email") # 针对多对多 authors=serializers.SerializerMethodField() def get_authors(self,obj): data=[] for i in obj.authors.all(): temp=[] temp.append(i.pk) temp.append(i.name) data.append(temp) return data class PublishSerializers(serializers.Serializer): """ PublishSerializers组件是一个集成功能组件,到底用什么功能,取决于调用什么接口 """ name=serializers.CharField() # 普通字段 city=serializers.CharField() # email=serializers.EmailField() ''' ps=PublishSerializers(publish_list,many=True) # 序列化数据 return Response(ps.data) 解析: data=[] for obj in publish_list: data.append({ "name":obj.name, "city":obj.city, "email":obj.email, "publish":obj.publish.email, # if 字段是多对多字段: "authors":get_authors(obj) }) self.data=data '''