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

  • 相关阅读:
    Linux内核等待队列机制介绍
    对数学的思考
    Linux 进程状态
    linux内核链表
    linux内核的经典书籍
    似乎最近发的Blog又少了
    抽象——放弃细节的另外一个说法
    成长
    发现QQ的一个小问题
    放上了一篇几个月前写的东西
  • 原文地址:https://www.cnblogs.com/guapitomjoy/p/11892257.html
Copyright © 2020-2023  润新知