1 2 3 4

Django Rest-Framework的视图

APIVIEW

  django中写CBV的时候继承的是View,rest_framework继承的是APIView,不管是View还是APIView最开始调用的都是as_view()方法~~那我们走进源码看看~~

  APIView继承了View, 并且执行了View中的as_view()方法,最后把view返回了,用csrf_exempt()方法包裹后去掉了csrf的认证

  我们看到了~在View中的as_view方法返回了view函数,而view函数执行了self.dispatch()方法~~但是这里的dispatch方法应该是我们APIView中的~~

  去initialize_request中看下把什么赋值给了request,并且赋值给了self.request, 也就是我们在视图中用的request.xxx到底是什么~~

我们看到,这个方法返回的是Request这个类的实例对象~~我们注意我们看下这个Request类中的第一个参数request,是我们走我们django的时候的原来的request~

我们看到了,这个Request类把原来的request赋值给了self._request, 也就是说以后_request是我们老的request,新的request是我们这个Request类~~

我们用了rest_framework框架以后,我们的request是重新封装的Request类~

  request.query_params 存放的是我们get请求的参数

  request.data 存放的是我们所有的数据,包括post请求的以及put,patch请求~~~

  相比原来的django的request,我们现在的request更加精简,清晰了~~~

 本人自己梳理的一张流程图:

 

posted @ 2018-11-01 21:40  王东波0214  阅读(96)  评论(0编辑  收藏  举报