序列化用于对用户请求数据进行验证和数据进行序列化(为了解决queryset序列化问题)。

那什么是序列化呢?序列化就是把对象转换成字符串,反序列化就是把字符串转换成对象

Django 序列化

serialze 只能做序列化

from django.core.serializers import serialize

publish_list=Publish.objects.all()

        #方式1: Django的序列化组件

        # ret=serialize("json",publish_list)

 

我们用postman 帮我们提交数据

 

restframework 序列化(不只做序列化,可以集成)

 restframework之序列化

如果是浏览器就是看到这个页面,如果是其他ajax就显示数据

 restframework之序列化

restframework之序列化

 

具体代码

一,#  自定义序列化组件

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

 

 

'''

 
View Code

相关文章: