Django与drf 源码视图解析

Django与drf 源码视图解析,第1张

概述0902自我总结 Django 与drf 源码视图解析 一.原生Django CBV 源码分析:View 二.drf CBV 源码分析:APIView 三.APIView做的处理 : : 1)二次封装 0902自我总结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)再将相应的结果一层层返回"""
三.APIVIEw做的处理

as_vIEw: 就干了一件事,禁用csrf认证

dispatch:

1)二次封装request2)三大认证四.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与drf 源码视图解析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1222950.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存