DRF视图继承关系总结

使用DRF的请求流程
浏览器 请求带着Content-Type ==========>交给DRF,
DRF根据 Content-Type ,将请求的数据通过 Parser解析器 ===>解析为 类字典对象
保存到 Request对象中
此时传入视图request对象就是经过处理后的类字典对象
提供request.data可以获取到请求的字典数据
request.query_params可以获取到查询参数
响应时,将序列化后的数据传给Response类,DRF根据前端的accecpt中声明的可接受的类型,通过Renderer 渲染器 ,转换为前端需要的数据,在响应给前端
如果前端没有传accecpt,通过配置文件中去指定

APIView是rest对View的继承:
1.request和response对象都在内部进行自动转化
2.任何APIException异常都会被捕获到,并且处理成合适的响应信息
3.在进行dispatch()分发前,会对请求进行身份认证、权限检查、流量控制。

GenericAPIView继承自APIVIew,
1.提供属性queryset serializer_class pagination_class filter_backends lookup_field默认为’pk’ lookup_url_kwarg
2.提供的方法
get_queryset(self)用于对查询集使用前的过滤等操作
get_serializer_class(self)可以添加判断,根据条件选择不同的序列化器
get_serializer(self, args, *kwargs)获取序列化对象时向对象的context属性添加request、format、view
get_object(self) 根据提供的查询集及pk来获取模型类对象,自动调用check_object_permissions,检查对象是否有权限被访问
3.一般不单独使用,一般配合扩展类一起使用
4.系统提供的五个扩展类
ListModelMixin列表视图扩展类(过滤和分页)
提供list(request, *args, **kwargs)方法快速实现列表视图
CreateModelMixin创建视图扩展类
提供create(request, *args, **kwargs)方法快速实现创建资源的视图
RetrieveModelMixin详情视图扩展类
提供retrieve(request, *args, **kwargs)方法,可以快速实现返回一个存在的数据对象
UpdateModelMixin更新视图扩展类(也支持局部更新)
提供update(request, *args, **kwargs)方法,可以快速实现更新一个存在的数据对象
DestroyModelMixin删除视图扩展类
提供destroy(request, *args, **kwargs)方法,可以快速实现删除一个存在的数据对象

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值