前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DRF框架(一)——drf请求生命周期是什么?请求模块request咋用?渲染模块render咋用?

DRF框架(一)——drf请求生命周期是什么?请求模块request咋用?渲染模块render咋用?

作者头像
一写代码就开心
发布2021-03-02 14:40:38
9040
发布2021-03-02 14:40:38
举报
文章被收录于专栏:java和python

目录

  • 安装DRF框架
  • drf请求生命周期流程
  • 请求模块:request对象
  • 渲染模块:

安装DRF框架

pip install djangorestframework

drf请求生命周期流程

代码语言:javascript
复制
根据应用中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对象

代码语言:javascript
复制
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中

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

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

代码语言:javascript
复制
# 在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')
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 安装DRF框架
  • drf请求生命周期流程
  • 请求模块:request对象
  • 渲染模块:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档