drf安装与APIView初步分析
drf安装
1. pip install djangorestframework
2. 在settings文件中注册app : INSTALLED_APPS = [..., 'rest_framework']
使用
视图层
from rest_framework.views import APIView from rest_framework.response import Response
class BookAPI(APIView): # 继承rest_framework的APIView # rest_framework会对request进行二次封装 def get(self, request, *args, **kwargs): print(request.query_params) # 通过?拼接的数据会封装到query_params中 return Response('ok') def post(self, request, *args, **kwargs): print(request.data) # 而通过body携带过来的数据会被封装到data中 return Response('ok')
路由层
from django.conf.urls import url from . import views urlpatterns = [ url(r'^books/$', views.BooksAPI.as_view()), ]
APIView初步分析
通过drf写接口是我们视图层继承的类变成了APIView,而APIView又继承了django的View,
显然APIView就是对View的进一步封装,所以下面还是从as_view和dispatch方法来分析
rest_framework.views文件中
APIView类
as_view方法
dispatch方法
initialize_request方法
Request类
__init__
query_params 与 data
APIView类
initial方法
总结:
1. 对于as_view方法, 只帮我们新加一个注释中间件的方法
2. 对于dispatch方法, 帮我们完成了一下四件事
① 重新封装了request,并且把原本的request封装到_request中
② 把?拼接的数据封装到query_params中, body携带的数据封装到data中
③ 添加了三大认证组件
④ 重新封装返回的response