rest_framework序列化组件使用Serializer,rest_framework序列化组件使用ModelSerializer,rest_framework系列化组件 之 局部钩子 全局钩子,rest_framework系列化组件 之 数据保存校验功能,图书增删改查 rest_framework 接口

rest_framework序列化组件使用Serializer

注:source 可以指定一个字段名,表模型,还可以指定表模型里的方法,source 指定的如果是方法不用加括号自己执行

1,写一个类继承serializers.Serializer
2,视图层调这个类实例化产生实例化对象
3,注意返回用的是rest_framework 的 Response

from
rest_framework import serializers class BookSerialize(serializers.Serializer): nid = serializers.CharField() # (1)source的用法1:起别名 # name = serializers.CharField(source="name") # source 指定要序列化的字段,不能写两个name author_name = serializers.CharField(source="name") # 相当于给name字段显示起别名为book_name price = serializers.CharField() # (2)source的用法2:可以指定表模型 # publish = serializers.CharField() # 可以利用__str__ 显示序列化 # publish = serializers.CharField(source="publish.name") # source可以指定表模型 # (3)source的用法3:指定表模型的方法,相当于直接触发序列化表里的方法执行 # xx = serializers.CharField(source="test") # source可以指定表模型的方法,将该返回值的结果赋值给xx 相当于给表模型添加字段 # rest_framework组件之SerializerMethodField 的方法使用,写一个get+字段名的函数 authors = serializers.SerializerMethodField() def get_authors(self, obj): # obj为序列化的对象 author_list = obj.authors.all() ser = AuthorSerialize(author_list, many=True) return ser.data # 返回的结果为序列化打印的对象 视图层: from rest_framework.views import APIView from rest_framework.response import Response from app01.myserialize import BookSerialize class Books(APIView): def get(self, request, *args, **kwargs): response = {"status": 100, "msg": "查看所有"} all_author = Author.objects.all() # 产生序列化的对象 ser = BookSerialize(all_author, many=True) # many=True 表示序列化多条 many=False 表示序列化单条 response["data"] = ser.data # 序列化以后的数据在data里 return Response(response)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypwgd.html