drf请求生命周期

Posted huikejie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了drf请求生命周期相关的知识,希望对你有一定的参考价值。

drf安装

  1. pip install djangorestframework

  2. 在settings文件中注册app : INSTALLED_APPS = [..., ‘rest_framework‘]

使用

视图层

技术图片
from rest_framework.views import APIView
from rest_framework.response import Response
class BookAPI(APIView): # 继承rest_framework的APIView # rest_framework会对request进行二次封装 def get(self, request, *args, **kwargs): print(request.query_params) # 通过?拼接的数据会封装到query_params中 return Response(ok) def post(self, request, *args, **kwargs): print(request.data) # 而通过body携带过来的数据会被封装到data中 return Response(ok)
技术图片

路由层

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r^books/$, views.BooksAPI.as_view()),
]

APIView初步分析

通过drf写接口是我们视图层继承的类变成了APIView,而APIView又继承了django的View,

显然APIView就是对View的进一步封装,所以下面还是从as_view和dispatch方法来分析

rest_framework.views文件中

APIView类

as_view方法

技术图片

dispatch方法

技术图片

initialize_request方法

技术图片

Request类

__init__

技术图片

query_params 与 data

技术图片

APIView类

initial方法

技术图片

总结:

1. 对于as_view方法, 只帮我们新加一个注释中间件的方法

2. 对于dispatch方法, 帮我们完成了一下四件事

  ① 重新封装了request,并且把原本的request封装到_request中

  ② 把?拼接的数据封装到query_params中, body携带的数据封装到data中

  ③ 添加了三大认证组件

  ④ 重新封装返回的response

 

以上是关于drf请求生命周期的主要内容,如果未能解决你的问题,请参考以下文章

DRF ---- APIview生命周期 请求/渲染/解析/异常/响应/ 模块源码 drf配置

drf框架 ----- 接口 cbv生命周期 请求解析响应组件 序列化组件 三大认证 其他组件

drf框架 2 drf框架的请求生命周期(as_view和dispatch方法), 请求解析渲染响应异常, 序列化组件 ,ORM配置回顾(media文件配置),应用在settings.py中(代码片

drf序列化大总结

drf之框架基础

SpringFilter生命周期Servlet生命周期bean的生命周期