Django之DRF-APIView、View源码对比

前面的文章已经介绍过APIView与View的区别,或者说APIView比View更为强大的地方(文章链接:https://blog.csdn.net/weixin_47454485/article/details/107461486):

  • 1.传入到视图方法中的是Request对象,而不是Django的HttpRequest对象
  • 2.视图方法可以返回Response对象,自动处理(根据请求头的参数)为符合前端要求的格式
  • 3.任何APIException异常都会被捕获到,并且处理成合适的响应信息
  • 4.在进行dispatch()分发前,会对请求进行身份认证、权限检查、流量控制

本文继续通过对比源码的方式来对以上4点进行分析

1.首先需要弄明白一个问题:
自定义一个视图类,继承View,又另外定义一个视图类,继承APIView,
问:这两个类的请求分别走的是哪个类的哪个函数,从as_view()和dispatch()来分析
答:继承View的自定义类请求走的View的dispatch()方法,继承APIView的自定义类请求走的APIView的dispatch()(可以参考前面的文章:https://blog.csdn.net/weixin_47454485/article/details/107505904)

2.明白了这个请求周期后可以发现,一个请求周期中最重要的函数就是dispatch(),进一步可以得出:APIView比View更为强高级之处就是APIView的dispatch()比View的dispatch()高级

3.对比源码
查看View的dispatch()方法,前面的文章已经讲过它的

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值