Django基础:drf 源码视图解析
2020-01-14 16:22
555 查看
Django 与drf 源码视图解析
一.原生Django CBV 源码分析:View
""" 1)as_view()是入口,得到view函数地址 2)请求来了调用view函数,内部调用dispatch函数完成请求分发 3)dispatch函数将请求方式映射成视图类的同名方法,完成请求的处理,得到相应 4)再将相应的结果一层层返回 """
二.drf CBV 源码分析:APIView
""" 1)as_view()是入口,得到view函数地址,在范围view函数地址时局部禁用csrf认证 2)请求来了调用view函数,内部调用(APIView类的)dispatch函数完成请求分发 3)dispatch函数 二次封装request、完成三大认证后,再将请求方式映射成视图类的同名方法,完成请求的处理,得到相应,再对相应做渲染处理 4)再将相应的结果一层层返回 """
推荐Python大牛在线分享技术 扣qun:855408893 领域:web开发,爬虫,数据分析,数据挖掘,人工智能 零基础到项目实战,7天学习上手做项目
三.APIView做的处理
-
as_view
:就干了一件事,禁用csrf认证
-
dispatch
: 1)二次封装request - 2)三大认证
四.drf 的局部渲染和全局渲染
通过看了源码我们对于渲染内容是
JSONRenderer还是
BrowsableAPIRenderer
JSONRenderer与BrowsableAPIRenderer的导入
from rest_framework.renderers import JSONRenderer from rest_framework.renderers import BrowsableAPIRenderer
-
局部设置
在我们定义基础APIView的类添加renderer_classes = [JSONRenderer]
这样网页就不会出现渲染只显示js数据
例如
class UserAPIView(APIView): renderer_classes = [JSONRenderer] def get(self, request, *args, **kwargs): print(request.query_params) data = { 'status': 0, 'msg': 'get ok', 'results': [], 'token': '123.12321.231' } return Response( data=data, status=status.HTTP_200_OK, headers={'Token': '123as.masd21.asd213sd'}, content_type='application/json' # 默认就是application/json )
全局设置在
setting
# drf配置 REST_FRAMEWORK = { # 响应的渲染模块 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ], 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', # 'application/json' 'rest_framework.parsers.FormParser', # 'application/x-www-form-urlencoded' 'rest_framework.parsers.MultiPartParser' # multipart/form-data ], }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Django与drf 源码视图解析
- Django的View(视图)-settings源码的解析-模板层-模板语法
- Django源码解析(五) URL配置
- Django源码解析
- Django DRF除了提供序列化器和视图外的其他功能
- 1.2.Spring源码解析——容器的基础XmlBeanFactory
- Django——基于类的视图源码分析 三
- jQuery源码解析(1)—— jq基础、data缓存系统
- django 信号机制-源码解析
- Android源码基础解析之Activity布局绘制流程
- django template 基础(二)(在视图中使用模板)
- Android源码基础解析之电源开关机按键事件流程
- django学习日志(View视图)第一部分:视图语法:路由参数+反向解析
- Java 多线程(五)—— 线程池基础 之 FutureTask源码解析
- Java基础之LinkedList源码解析
- 三十八、python学习之Django框架(一):入门,介绍,设计模式,环境搭建,项目创建,基本配置,创建视图,静态文件,路由与反解析,App应用配置
- django基础入门(2)django中第一个视图
- Django——基于类的视图源码分析 二
- django源码分析--02url解析
- 深入学习Django源码基础17 - django中messagee分析学习