首页 > 其他分享 >3.drf使用配置&请求封装

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

时间:2023-02-16 22:46:38浏览次数:32  
标签:封装 请求 对象 request Django ._ 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

 

 

标签:封装,请求,对象,request,Django,._,drf
From: https://www.cnblogs.com/MRPython/p/17128570.html

相关文章

  • 5.drf-认证
    在开发后端API的时候,不同的功能可能有不同的限制,如无需验证:API可以直接访问需要验证:API只有用户通过验证才可以访问这个时候我们就可以使用DRF提供的认证组件,下......
  • 4.drf-版本管理
    根据RESTful规范,后端API中需要体现出版本,DRF中支持5种版本的设置,常见的三种如下1.URL的GET中传递参数在视图类中定义fromrest_framework.versioningimportQuery......
  • 8.drf-序列化器
    在序列化类中,如果想使用request,则可以通过self.context['request']获取序列化器的主要由两大功能-对请求的数据进行校验(底层调用的是Django的Form和ModelForm)-对数......
  • 7.drf-限流
    限流就是限制用户的访问频率,如每分钟的操作的次数不超过3次等对于匿名用户,使用用户IP作为唯一标识对于登录用户,则使用用户的ID作为唯一标识1.限流的机制DRF中......
  • 6.drf-权限
    认证:判断用户是否登陆,从而获取用户的信息权限:判断当前用户是否有权限访问API接口,例如:普通用户,管理员,超级管理员权限可能是不同的下面通过案例进行介绍模型类fromdj......
  • SpringMVC08 - 处理ajax请求
    SpringMVC处理ajax请求@RequestBody@RequestBody可以获取请求体信息,使用@RequestBody注解标识控制器方法的形参,当前请求的请求体就会为当前注解所标识的形参赋值<!--此......
  • 【技术分享】面向对象开发系列之【封装】
    封装理解封装是面向对象程序开发的基石。程序开发,最核心价值,是数据。程序其实是读取数据,操作数据,保存数据等一系列操作。那么经过良好组织过的数据,将使编程事半功倍。......
  • drf回顾,前端发展历史,vue介绍,第一个helloword,插值语法
    目录drf回顾,前端发展历史,vue介绍,第一个helloword,插值语法今日内容概要今日内容详细1drf回顾2前端发展历史3vue介绍4第一个helloworld5插值语法drf回顾,前端发展历史,vu......
  • 【android】音视频开发五:学习MediaExtractor 和 MediaMuxer,知道如何解析和封装 mp4 文
    MediaExtractorMediaExtractor顾名思义就是多媒体提取器,主要负责:获取媒体文件的格式,包括音视频轨道,编码格式,宽高,采样率,声道数等,分离音频流,视频流,读取分离后的音视频数据......
  • ASEMI中低压MOS管18N20参数,18N20封装,18N20尺寸
    编辑-ZASEMI中低压MOS管18N20参数:型号:18N20漏极-源极电压(VDS):200V栅源电压(VGS):±30V漏极电流(ID):18A功耗(PD):83W储存温度(Tstg):-55to150℃静态漏源导通电阻(RDS(ON)):0.18Ω......