码迷,mamicode.com
首页 > 其他好文 > 详细

drf请求生命周期

时间:2019-08-21 00:05:39      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:imp   进一步   from   def   span   class   http   sel   title   

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请求生命周期

标签:imp   进一步   from   def   span   class   http   sel   title   

原文地址:https://www.cnblogs.com/huikejie/p/11386243.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!