选项
read_only:表明该字段仅用于序列化输出,默认False;==反序列化时可以不传递,如主键id==
required:表明该字段在反序列化时必须输入,默认True;==,反序列化必须要传递, 除非设置了default |
False | read_only==
- many: 如果关联的对象数据不是只有一个,而是包含多个数据,如想序列化图书BookInfo数据,每个BookInfo对象关联的英雄HeroInfo对象可能有多个,此时关联字段类型的指明仍可使用上述几种方式,只是在声明关联字段时,多补充一个many=True参数即可。
class BookInfoSerializer(serializers.Serializer):
"""图书数据序列化器"""
...
heroinfo_set = serializers.PrimaryKeyRelatedField(read_only=True, many=True)
二级视图GenericAPIView
GenericAPIView,继承自APIView
GenericAPIView与一个或多个组合使用
-
为标准列表和详细视图,添加了常用的行为,和属性
属性:
(类)属性 | 作用
---|---
serializer_class | 指定通过序列化器
queryset | 指定通用的数据集
lookup_field | 默认是"pk"(url路径参数),用来获取单个对象
lookup_url_kwarg | 查询单一数据时URL中的参数关键字名称,默认与look_field相同
方法(行为) | 作用
---|---
get_queryse | 获取queryset数据集
get_serializer | 获取序列化器对象
get_serializer_class | 获取序列化器(类)
get_object | 根据lookup_field("pk"参数),获取单个对象
三级视图
三级视图特点: 已经提供好了通用功能(get,post...等等),除非有特殊的行为,可以重写
三级视图名称 父类 方法 作用
ListAPIView GenericAPIView,ListModelMixin get 获取所有数据
CreateAPIView GenericAPIView,CreateModelMixin post 创建单个数据
RetrieveAPIView GenericAPIView,RetrieveModelMixin get 获取单个数据
DestroyAPIView GenericAPIView,DestroyModelMixin delete 删除单个数据
UpdateAPIView GenericAPIView,UpdateModelMixin put 修改单个数据
视图集
-
特点
在一个类中, 组合多个功能(比如: 可以将获取所有, 获取单个写在一个视图)
路由,必须使用映射形式({get:'list','post':'create'})
视图集名称 父类 功能
ViewSet ViewSetMixin,APIView 路由要映射编写
GenericViewSet GenericAPIView 作用也与GenericAPIVIew类似,提供了get_object、get_queryset等方法
ModelViewSet GenericAPIView,5个mixin类 增删改查全部功能
ReadOnlyModelViewSet GenericAPIView,2个mixin类 获取单个,所有功能