1.drf使用配置
1.1 安装
pip install djangorestframework==3.12.4
版本要求
![复制代码](http://common.cnblogs.com/images/copycode.gif)
djangorestframework==3.12.4 python(3.5-3.9) Django(2.2, 3.0, 3.1) djangorestframework==3.11.2 python(3.5-3.8) Django(1.11, 2.0, 2.1, 2.2, 3.0)
![复制代码](http://common.cnblogs.com/images/copycode.gif)
1.2 配置
在Django的setting.py中设置如下
![复制代码](http://common.cnblogs.com/images/copycode.gif)
INSTALLED_APPS = [ ... 'rest_framework', ] # drf相关的配置 REST_FRAMEWORK = { }
![复制代码](http://common.cnblogs.com/images/copycode.gif)
2.请求封装
DRF框架是在Django的基础上扩展到,流程基本和Django的CBV相同
drf中重写了as_view和dispatch函数,扩展了一些功能 - as_view:免除csrf_token的验证 - dispath:添加了版本处理,认证,权限,访问频率限制等功能
request再封装
- 之前我们Django开发中,视图中的request对象是
WSGIrequest
的类对象,包含了请求的所有数据
def users(request, version, pk=None): request.method request.POST.get('data')
- 在DRF中,视图中的request是
Request
的类对象,对Django对象进行了再封装,不仅包含之前的request请求,还有额外的方法和对象
class UserView(APIView): def get(self, request, *args, **kwargs): # 通过对象的嵌套直接找到原request,读取相关值 request._request.method request._request.GET request._request.POST request._request.body # 直接读取新request对象中的值,一般此处会对原始的数据进行一些处理,方便开发者在视图中使用。 request.query_params # 内部读取请求体中的数据,并进行处理,例如:请求者发来JSON格式,他的内部会对json字符串进行反序列化。 request.data # 通过 __getattr__ 去访问 request._request 中的值 request.method # 封装在对象中的可变参数 # self.args # self.kwargs
底层源码的实现:
将Django 中的request再封装,成为了一个新的request
标签:封装,请求,对象,request,Django,._,drf From: https://www.cnblogs.com/MRPython/p/17128570.html