安装DRF框架

pip install djangorestframework

drf请求生命周期流程

根据应用中urls.py,走as_view方法,但是视图类没有该方法,所以请求走的是APIView的as_view方法

在APIView的as_view调用父类(django原生View)的as_view,同时还禁用了 csrf 认证

在父类(django原生View)的as_view中dispatch方法请求走的又是APIView的dispatch    
#因为APIView也可以走dispatch,视图类是先继承APIView,APIView中没有再去原生View中

完成任务方法交给视图类的请求函数处理,得到请求的响应结果,
返回给前台所以以后直接就从APIView的dispatch入口看源码

请求模块:request对象

1) drf 对原生request做了二次封装,设置request._request等于原生request

2) 原生request对象的属性和方法都可以被drf的request对象直接访问(兼容)

3) drf请求的所有url拼接参数均被解析到query_params中,所有数据包数据都被解析到data中 
get请求:url中拼接的参数通过request.query_params获取
post请求:所有请求方式所携带的数据包都是通过request.data获取

请求模块最终的结论就是:获取数据有两种方式 query_params和data(通过parser解析数据传到data)

使用drf写的get/post请求

渲染模块:

自定义全局配置:所有视图类统一处理,在项目的settings.py中

REST_FRAMEWORK = {
   
    # drf提供的渲染类
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',       #只显示出json数据
      'rest_framework.renderers.BrowsableAPIRenderer',    #渲染出页面,注意是BrowsableAPIRenderer
    ],
}

自定义局部配置:某一个或一些实体类单独处理,在views.py视图类中提供对应的类属性

# 在setting.py中配置REST_FRAMEWORK,完成的是全局配置,所有接口统一处理
# 如果只有部分接口特殊化,可以完成 - 局部配置
from rest_framework.renderers import JSONRenderer
class Test2(APIView):
    # 局部配置
    renderer_classes = [JSONRenderer]
    def get(self, request, *args, **kwargs):
        return Response('drf get ok 2')

    def post(self, request, *args, **kwargs):
        return Response('drf post ok 2')