3.drf使用配置&请求封装

1.drf使用配置

1.1 安装

pip install djangorestframework==3.12.4

版本要求

复制代码
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)
复制代码

 

1.2 配置

在Django的setting.py中设置如下

复制代码
INSTALLED_APPS = [
    ...
    'rest_framework',
]

# drf相关的配置
REST_FRAMEWORK = {
    
}
复制代码

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

 

 

posted @ 2023-02-16 22:32  五仁味儿月饼  阅读(33)  评论(0编辑  收藏  举报