博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rest framework 解析器,渲染器
阅读量:6435 次
发布时间:2019-06-23

本文共 1629 字,大约阅读时间需要 5 分钟。

 解析器

解析器的作用

解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己可以处理的数据。本质就是对请求体中的数据进行解析。

请求体相关字段:

  • Accept:指定了接收的数据类型
  • ContentType:指定了传递的数据类型

解析器工作原理的就是拿到请求的ContentType来判断前端给我的数据类型是什么,然后我们在后端使用相应的解析器去解析数据。

ps:

  django 原生是不支持 json 类型的数据,数据通过request.get 是拿不到的,只能在 request.body 全部请求体中自己去拿

解析器配置

配置之前先看下DRF 原生支持多少类型

 默认使用的解析器

如果想更改,可在单个视图或者全局的settings.py中配置要使用的解析器。

单个视图配置

class BookViewSet(ModelViewSet):    queryset = models.Book.objects.all()    serializer_class = BookModelSerializer    parser_classes = [JSONParser, ]

全局配置

REST_FRAMEWORK = {    'DEFAULT_PARSER_CLASSES': (        'rest_framework.parsers.JSONParser',    )}

 

注意:当你的项目中只配置了 JSONParser 解析器时,你的项目现在就只能解析JSON格式的数据了,客户端如果使用浏览器提交,那么你将无法解析。

注意:在视图类中定义的配置项的优先级要高于全局配置中的配置项。

 

渲染器

渲染器同解析器相反,它定义了框架按照content_type来返回不同的响应。

默认渲染器

DRF提供的渲染器有很多,默认是

'DEFAULT_RENDERER_CLASSES': (        'rest_framework.renderers.JSONRenderer',        'rest_framework.renderers.BrowsableAPIRenderer',    ),

我们也可以在视图中局部设置也可以在全局的settings.py中进行设置:

局部设置

class PublisherViewSet(ModelViewSet):    queryset = models.Publisher.objects.all()    serializer_class = PublisherModelSerializer    renderer_classes = [JSONRenderer, ]

这样设置后就只能返回JSON格式的数据了,并不会像之前一样提供一个阅读友好的web页面。

全局设置

REST_FRAMEWORK = {    'DEFAULT_RENDERER_CLASSES': (        'rest_framework.renderers.JSONRenderer',    ),}

 

REST_FRAMEWORK = {    # 关闭渲染器,只用json 的格式显示在当前页面    # "DEFAULT_RENDERER_CLASSES": 'rest_framework.renderers.JSONRenderer',        # 打开渲染器,    "DEFAULT_RENDERER_CLASSES": ['rest_framework.renderers.JSONRenderer',                                 'rest_framework.renderers.BrowsableAPIRenderer'],}

 

转载于:https://www.cnblogs.com/shijieli/p/10354374.html

你可能感兴趣的文章
xen虚拟化实战系列(七)之xen虚拟机VNC访问配置
查看>>
Open***2.4.3 安装部署文档(实战)
查看>>
Junit 笔记
查看>>
golang思考之运行速度之函数调用
查看>>
AndroidPN的学习研究(三)源码流程分析
查看>>
PowerCLI: “WARNING: There were one or more problems with the server certificate”
查看>>
千万级pvj架构设计
查看>>
我的友情链接
查看>>
数据库学习笔记--常用SQL语句
查看>>
客户故事:4家银行如何打造新一代移动金融中心
查看>>
【新书推荐】“十三五”国家重点出版规划项目《网络安全技术及应用》第3版出版发行...
查看>>
《神探tcpdump终结招》-linux命令五分钟系列之四十三
查看>>
博客即日起不再更新,已转移至https://dacat.cc
查看>>
Tomcat的Server.xml虚拟主机和虚拟目录的配置
查看>>
.java.io.StreamCorruptedException: invalid type co
查看>>
OEM安装配置
查看>>
Highmaps网页图表教程之下载Highmaps与Highmaps的地图类型
查看>>
利用DNS Zone Transfers漏洞工具dnswalk
查看>>
我的友情链接
查看>>
从第二个函数NVIC_PriorityGroupConfig()中了解Cortex-M3的中断
查看>>