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

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

时间:2022-11-14 18:33:09浏览次数:40  
标签:封装 请求 对象 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/victor1234/p/16874421.html

相关文章

  • springboot框架中service层抽取增删改查并封装
    1、BaseService.javaimportcatl.mapper.BaseMapper;importtk.mybatis.mapper.entity.Example;importjavax.annotation.Resource;importjava.util.Collections;import......
  • 动画函数封装
    动画函数封装1.动画实现原理核心原理∶通过定时器setlnterval)不断移动盒子位置。实现步骤:1.获得盒子当前位置2.让盒子在当前位置加上1个移动距离3.利用定时器不断......
  • java 通用 post 请求
    java 实现 Http的 Post 请求 用 Json 为参数调用://_http_url_cdr为//"http://10.10.10.243:15642/call/upload/ctiCdrUpload"//eventJson为//{"callid":"1......
  • 第七章-SSRF服务端请求伪造
    第一节SSRF漏洞原理介绍1.1SSRF漏洞定义SSRF(server-siterequestforery,服务端请求伪造)是一种构造请求,由服务端发起请求的安全漏洞。一般情况下,SSRF的目标就是与外部......
  • react项目--路由封装
    importReact,{lazy}from"react";importHomefrom"../views/Home";importLoginfrom"@/views/Login";constPage1=lazy(()=>import("../views/Page1"));......
  • react项目--redux封装
    index.ts1conststore={2state:{3num:20,4},5actions:{6//放同步的代码7add1(newState:{num:number},action:{t......
  • CROS 跨域请求原理
    cros分为两种请求简单请求浏览器将CORS请求分成两类:简单请求(simplerequest)和非简单请求(预检请求)(not-so-simplerequest)。只要同时满足以下两大条件,就属于简单请求。(1)请......
  • .net网络请求
    varhttpClient=newHttpClient();//实例化一个请求对象httpClient.DefaultRequestHeaders.Add("Authorization","eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.......
  • 请求的HTTP协议
    请求分为GET请求,POST请求GET请求  1.请求行  请求方式 GET  请求的资源路径  请求的协议版本号 HTTP/1.12.请求头  key:value 组成  不......
  • jquery-一行代码解决跨域问题 | 仅限get请求
    问题平时我们在开发时遇到的跨域问题,后台暂不给解决时,我们一般可以用vue代理(node)、nginx反向代理等方式来解决但是当项目要上线的时候,这些问题将又会出现就比如,自制的......