9.6 rest framework 解析器,渲染器

解析器

解析器的作用

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

请求体相关字段:

  • 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

时间: 2024-08-01 09:26:47

9.6 rest framework 解析器,渲染器的相关文章

DRF的解析器和渲染器

解析器 解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己想要的数据类型的过程. 本质就是对请求体中的数据进行解析. Django的解析器 我们请求进来请求体中的数据在request.body中,那也就证明,解析器会把解析好的数据放入request.body 我们在视图中可以打印request的类型,能够知道request是WSGIRequest这个类. 我们可以看下这个类的源码,我们是怎么拿到request.POST数据的 application/x-www-form-urlenc

【DRF解析器和渲染器】 񧠰

目录 解析器 Django中的解析器 DRF中的解析器 DRF中的渲染器 原文: http://blog.gqylpy.com/gqy/294 "@ *** 解析器 解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己想要的数据类型的过程. 本质就是对请求体中的数据进行解析. Content-type:用于声明我给你传的是什么类型的数据 : application/x-ww-form-urlencoded 表单数据类型 : multipart/form-data 文件 : applic

Django REST Framework 解析器与渲染器

01-解析器 REST 框架包括一些内置的Parser类,允许你接受各种媒体类型的请求.还支持定义自己的自定义解析器,这使你可以灵活地设计API接受的媒体类型. 注意: 开发客户端应用程序时应该始终记住在HTTP请求中发送数据时确保设置Content-Type头. 如果你不设置内容类型,大多数客户端将默认使用'application/x-www-form-urlencoded',而这可能并不是你想要的. 举个例子,如果你使用jQuery的.ajax() 方法发送json编码数据,你应该确保包含c

DRF 版本、认证、权限、限制、解析器和渲染器

目录 一.DRF之版本控制 为什么要有版本控制? DRF提供的版本控制方案 版本的使用 全局配置 局部配置(使用较少) 二.DRF之认证 内置的认证 步骤 三.DRF之权限 1.自定义一个权限类 2.权限 局部配置 3.权限 全局配置 四.DRF之限制 1.使用自定义限制类 1.1自定义一个限制类 1.2限制 局部配置 1.3限制 全局配置 2.使用内置限制类 2.1定义内置限制类 2.2全局配置 五.DRF之分页 1.为什么要使用分页 2.DRF使用分页器 2.1分页模式 2.2全局配置 2.

rest framework 之渲染器

根据 用户请求URL 或 用户可接受的类型,筛选出合适的 渲染组件. 用户请求头: Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 一.JSON 1.urls.py from django.urls import path, re_path, include from api.views import TestView2 urlpatterns = [ re_

Django Restful Framework【第五篇】分页、视图、路由、渲染器

一.分页 试问如果当数据量特别大的时候,你是怎么解决分页的? 方式a.记录当前访问页数的数据id 方式b.最多显示120页等 方式c.只显示上一页,下一页,不让选择页码,对页码进行加密 1.基于limit offset 做分页 from rest_framework.pagination import LimitOffsetPagination urls.py urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^app01/(?P<v

基于OpenGL编写一个简易的2D渲染框架-11 重构渲染器-Renderer

假如要渲染一个纯色矩形在窗口上,应该怎么做? 先确定顶点的格式,一个顶点应该包含位置信息 vec3 以及颜色信息 vec4,所以顶点的结构体定义可以这样: struct Vertex { Vec3 position; Vec4 color; }; 然后填充矩形四个顶点是数据信息: Vertex* data = ( Vertex* ) malloc(sizeof( Vertex ) * 4); data[0].position.set(0, 0, 0); data[1].position.set(

RENDERERS salt渲染器

简单的介绍: 渲染器一般使用在sls文件中,将指定的模板形式数据翻译成python数据类型,供salt使用.默认情况下sls文件呈现的是jinja模板的样子,然后模板会被解析成YAML格式的数据,salt支持多种模板.目前模板的支持情况如下: Jinja + YAML, Mako + YAML, Wempy + YAML, Jinja + json, Mako + json and Wempy + json Renderers可以被设计任何模板类型,只需要把这些文件解析成Python结构的数据

游览器渲染浅析

前提知识 游览器构成 游览器内核 游览器内核也称渲染引擎,主要有3种: Trident内核: IE Webkit内核:Chrome,Safari Gecko内核:FireFox 解析前的工作 DNS域名解析 建立TCP连接 发送HTTP请求 服务器处理请求 返回响应结果 关闭TCP连接 浏览器解析 关键渲染路径 浏览器从最初接收请求来的HTML.CSS.javascript等资源,然后解析.构建树.渲染布局.绘制,最后呈现给客户能看到的界面这整个过程--简单来说,就是对游览器渲染过程的描述. 渲