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,它封装好了这两个方法属性

  • 相关阅读:
    网络基础
    Web开发几种常用工具
    win组合键概述(windows10)
    Alfred使用
    Java8之新特性--modules
    jsp九大内置对象和四大作用域
    authtype
    Myeclipse中的快捷键
    如何在Jenkins CI 里调试
    写好unit test的建议和例子
  • 原文地址:https://www.cnblogs.com/guapitomjoy/p/11892257.html
Copyright © 2011-2022 走看看