zoukankan      html  css  js  c++  java
  • drf请求模块分析

    一、drf请求模块

    1. 、drf的request是在wsgi的request基础上再次封装

    2. 、wsgi的request作为drf的request一个属性:_request

    3. 、新的request对旧的request做了完全兼容

    4. 、新的request对数据解析更规范化:

      ​ 所有的拼接参数都解析到query_params中,

      ​ 所有数据包数据都被解析到data中

      ​ query_params和data属于QueryDict类型,可以 .dict() 转化成原生dict类型

    源码分析

    1、drf的APIView类:重写了as_view(),同时他还继承了View类,主体逻辑还是调用父类View的as_view()。

    2.as_view(),局部禁用了csrf认证 重点:所有继承drf的基本视图类APIView的视图类,都不在做csrf认证校验

    3.drf的APIView类:重写了dispatch(),在内部对request进行了二次封装:self.initialize_request(request, *args, **kwargs)

    1. 内部核心:

    走drf的Request初始化方法__init__:self._request = request

    drf的Request的getter方法__getattr__:先从self._request反射取属性,没取到再到drf的request中取

    5.核心:request除了可以访问原wsgi协议的request所有内容,还可以访问 query_params、data,它封装好了这两个方法属性

  • 相关阅读:
    android 图片全屏
    .9.png
    C++中的endl
    C++输入输出cin与cout
    word-search
    Java中的的画正三角方法
    octave中的一些基本操作
    C#中判断语句 if、if-else if、switch-case
    C#中的异常处理(try-catch的使用)——使程序更加稳定
    编程&blog处女篇-用C#求100以内的质数
  • 原文地址:https://www.cnblogs.com/guapitomjoy/p/11892257.html
Copyright © 2011-2022 走看看