drf之请求与相应(代码片段)

caoyu080202201 caoyu080202201     2022-12-06     259

关键词:

一、请求对象

  1、重新封装了原request。

  2、request._request:原request对象。

  3、request.data:前端post过来的三种编码格式的数据,都可以从中取出。

  4、request.query_params:url携带的参数,相当于原来的request.GET。

  5、request.FILES:文件数据。

二、响应对象

  1、通过Response()实例化的对象,可以传入相应参数。

  2、data:返回的主体数据,字典形式。

  3、status:返回的状态码,默认为200。

    ①在rest_framework.status.py中,所有状态码都定义为了常量。

  4、template_name:自定义的模板文件名,不常用。

  5、headers:响应头,可以以字典形式传入数据,会添加进响应头中。

  6、content_type:响应的编码格式,application/json和text/html。

  7、响应式布局:浏览器响应成浏览器的格式,postman响应成json格式,是通过默认配置实现的,可以通过项目配置(全局修改)覆盖默认配置,也可以在视图类中局部配置(优先级最高),若只保留json渲染器,则浏览器也会响应成json格式。

    ①全局配置,项目的setting.py中书写:

# 如此配置与默认配置相同
REST_FRAMEWORK = 
    DEFAULT_RENDERER_CLASSES: (
        rest_framework.renderers.JSONRenderer,  # json渲染器
        rest_framework.renderers.BrowsableAPIRenderer,  # 浏览API渲染器
    )

    ②局部配置,视图类中书写:

    from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer
    renderer_classes = (JSONRenderer, BrowsableAPIRenderer)

 

drf序列化器之请求响应以及视图(代码片段)

1.http请求处理drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作。所以在django原有的django.views.View类基础上,drf封装了多个视图子类出来提供给我们使用。DjangoRESTframwork提供的视图的主要作用:控制序列化器的... 查看详情

05drf源码剖析之认证(代码片段)

...器与API进行交互时,我们可以登录,然后浏览器会话将为请求提供所需的身份验证。如果我们以编程方式与API进行交互,则需要在每个请求上显式提供身份验证凭据。如果我们尝试在不进行身份验证的情况下创建代码段,则会收... 查看详情

drf请求与响应(代码片段)

1请求和响应1.1RequestRESTframework传入视图的request对象不再是Django默认的HttpRequest对象,而是RESTframework提供的扩展了HttpRequest类的Request类的对象。RESTframework提供了Parser解析器,在接收到请求后会自动根据Content-Type指明的请求数据类... 查看详情

06drf源码剖析之权限(代码片段)

...权限简述权限与身份验证和限制一起,决定了是否应授予请求访问权限。权限检查始终在视图的最开始处运行,然后再允许执行其他任何代码。权限检查通常会使用request.user和request.auth属性中的身份验证信息来确定是否应允许传... 查看详情

drf之解析器组件及序列化组件(代码片段)

...我们已经有了一个共识,Django无法处理application/json协议请求的数据,即,如果用户通过application/json协议发送请求数据到达Django服务器,我们通过request.POST获取到的是一个空对象。  DjangoRestFramework帮助我们实现了处理application/... 查看详情

drf请求与响应(代码片段)

目录一请求与响应1.1Request1.1.1.1常用属性1).data2).query_params1.2Response1.1.2.1构造方式1.1.2.2常用属性1).data2).status_code3).content1.1.2.3状态码1)信息告知-1xx2)成功-2xx3)重定向-3xx4)客户端错误-4xx5)服务器错误-5xx二视图2.2视图2.2.... 查看详情

drf之rest规范介绍及view请求流程分析(代码片段)

...和算法的结合,而在Web类型的App中,我们对于数据的操作请求是通过url来承载的,本文详细介绍了REST规范和CBV规范和CBV请求流程。  编程即数据结构和算法的结合。简单的程序可能不需要跟用户交互数据,但是现代的应用程... 查看详情

drf框架之用户登录状态保持(代码片段)

...们的应用提供了用户名和密码进行用户认证,那么下一次请求时,用户还是要再一次进行用户认证才行。  因为根据HTTP协议的无状态性,在下一次请求时我们并不知道是哪个用户发出的请求,所以为了让我们能识别是哪个 查看详情

drf框架之路由routers(代码片段)

对于视图集,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息。RESTframework提供了两个routerSimpleRouterDefaultRouter1.使用方法:1.创建路由对象#定义一个路由器对象rout... 查看详情

drf之文档生成和jwt(代码片段)

...频率类,需要写两个方法 -#判断是否限次:没有限次可以请求True,限次了不可以请求False defallow_request(self,re 查看详情

drf之视图组件(代码片段)

...ST的最重要的一句话,那就是:url用来唯一定位资源,http请求方式用来定位用户行为。根据这句话,我们设计了下面的RESTfulapi:相关知识点二:混入类、多继承我有一个Animal类,它包含如下方法:classAnimal(obje 查看详情

drf-解析器组件(代码片段)

...引入DjangoRestFramework帮助我们实现了处理application/json协议请求的数据,另外,我们也提到,如果不使用DRF,直接从request.body里面拿到原始的客户端请求的字节数据,经过decode,然后json反序列化之后,也可以得到一个Python字典类型... 查看详情

django(63)drf权限源码分析与自定义权限(代码片段)

前言上一篇我们分析了认证的源码,一个请求认证通过以后,第二步就是查看权限了,drf默认是允许所有用户访问 权限源码分析源码入口:APIView.py文件下的initial方法下的check_permissionsdefcheck_permissions(self,request):"""检查是否应... 查看详情

drf框架之自定义action(代码片段)

一、自定义action使用action装饰器methods支持的请求方式,为一个列表,默认为[‘get‘]detail必传参数,要处理的是否是详情资源对象(即是否通过url路径获取主键)True表示需要传递主键id,使用通过URL获取的主键对应的数据对象Fal... 查看详情

drf08(代码片段)

...继承APIView类,也只有APIView类中才有dispatch方法,所以所有的请求都要经过三大认证,认证通过后执行相应请求的视图函数defdispatch(self,request,*args,**kwargs):"..."try:#三大认证self.initial(request,*args,**kwargs)"..."exceptExceptionasexc:#... 查看详情

djangodrf源码分析之三大认证(代码片段)

...要来谈谈认证模块中的三大认证,首先我们先回顾一下DRF请求的流程:前台发送请求,后台接受,进行urls.py中的url匹配,执行对应类视图调用as_view()方法fromdjango.conf.urlsimporturlfrom.importviewsurlpatterns=[url 查看详情

drf之jwt补充(代码片段)

DRF之JWT补充1.JWT控制用户登录后才能反问,匿名用户无法访问classQueryUserView(GenericViewSet,RetrieveModelMixin):"""查询接口"""queryset=User.objects.all()serializer_class=UserSerializerpk=None#thrott 查看详情

drf之渲染(代码片段)

实例:#路由fromdjango.conf.urlsimporturl,includefromapp01.viewsimportTestViewurlpatterns=[url(r'^test/$',TestView.as_view()),url(r'^test.(?P<format>[a-z0-9]+)',TestView.as_view()),]# 查看详情