ModelSerializer与常规的Serializer相同 ModelSerializer 基于模型类自动生成一系列字段 默认实现create()和update()方法,不需重写 序列化器默认只能序列化一条数据,序列化多条数据需要加上many=True
class DepartmentView(APIView):
"""
使用序列化器返回数据
"""
def put(self, request):
dep_id = request.data.get("dep_id")
name = request.data.get('name')
# 通过dep_id来获取要修改的数据对象
dep_obj = Department.objects.filter(id=dep_id).first()
# 判断对象是否存在
if dep_obj:
# 存在时,进行修改
# instance要修改的对象
# data 要修改的数据
# partial=True 默认修改全部,为True时,可以修改部分字段
dep_serializer = DepartmentSerializer(instance=dep_obj, data={'name': name}, partial=True)
# raise_exception 验证出错时,抛出异常信息
dep_serializer.is_valid(raise_exception=True)
dep_serializer.save()
# 返回数据
return Response({'msg': dep_serializer.data, 'code': 200})
else:
return Response({'msg': '修改的数据不存在', 'code': 400})
instance要修改的对象 data 要修改的数据
partial=True 默认修改全部,为True时,可以修改部分字段
GenericAPIView使用
定义:继承了APIView, 提供了通用类属性、方法, 帮助我们快速编写视图
get_queryset(self) 返回视图使用的查询集,是列表视图与详情视图获取数据的基础
get_serializer_class(self) 返回序列化器类,默认返回serializer_class,可以重写
get_serializer 返回序列化器对象
混入扩展类
提供了5个Mixin扩展类,封装了通用的增、删、改、查
ListModelMixin 提供list方法 查询所有
CreateModelMixin 提供Create方法 增加一条数据
RetrieveModelMixin 提供Retrieve方法 获取单个数据
UpdateModelMixin 提供Update方法 修改一条数据
DestroyModelMixin 提供Destroy方法 删除一条数据