Django与drf 源码视图解析
2019-09-02 20:56
459 查看
原文链接:http://www.cnblogs.com/pythonywy/p/11448967.html
0902自我总结
Django 与drf 源码视图解析
一.原生Django CBV 源码分析:View
"""
1)as_view()是入口,得到view函数地址
2)请求来了调用view函数,内部调用dispatch函数完成请求分发
3)dispatch函数将请求方式映射成视图类的同名方法,完成请求的处理,得到相应
4)再将相应的结果一层层返回
"""
[/code]
二.drf CBV 源码分析:APIView
"""
1)as_view()是入口,得到view函数地址,在范围view函数地址时局部禁用csrf认证
2)请求来了调用view函数,内部调用(APIView类的)dispatch函数完成请求分发
3)dispatch函数 二次封装request、完成三大认证后,再将请求方式映射成视图类的同名方法,完成请求的处理,得到相应,再对相应做渲染处理
4)再将相应的结果一层层返回
"""
[/code]
三.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
)
[/code]
全局设置在
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
],
}
[/code]转载于:https://www.cnblogs.com/pythonywy/p/11448967.html
相关文章推荐
- spring mvc json及各类视图解析 源码分析
- 深入剖析Spring Web源码(十八) - 视图解析和视图显示 - 更多的视图解析器
- springMVC源码解析--ViewResolver视图解析器执行(三)
- Django 之 admin组件使用&源码解析
- Django 基于类的视图源码分析 三
- Python-超好用的Django源码解析
- django学习日志(View视图)第二部分:视图语法:重定向+反向解析
- springMVC源码解析--ViewResolver视图解析器执行(三)
- Django源码解析
- DRF(Django RestFramework)视图集总结
- django---SessionMiddleware源码解析(二)
- vue数据控制视图源码解析
- Django源码解析(一) 开篇
- django源码解析之BigIntegerField (一)
- Django框架之DRF 基于mixins来封装的视图详解
- Django DRF除了提供序列化器和视图外的其他功能
- django源码分析--02url解析
- 三十八、python学习之Django框架(一):入门,介绍,设计模式,环境搭建,项目创建,基本配置,创建视图,静态文件,路由与反解析,App应用配置
- Django源码解析(二) manage.py
- django源码解析之 BooleanField (二)