"""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)再将相应的结果一层层返回"""
三.APIVIEw做的处理as_vIEw
: 就干了一件事,禁用csrf认证
dispatch
:
通过看了源码我们对于渲染内容是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与drf 源码视图解析所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)