码迷,mamicode.com
首页 > 编程语言 > 详细

[Python自学] restframework (5) (解析器)

时间:2020-01-28 19:09:37      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:默认   指定   media   code   class   处理   框架   auth   data   

一、数据解析器

1.Django默认的数据解析

在我们使用django框架时,浏览器如果发送以下类型的POST数据:

Content-Type=application/x-www-form-urlencoded
Content-Type=application/form-data

则django会自动帮我们将请求体中的数据转换为字典,保存在request.POST中。

但是,如果浏览器发送的是json数据:

Content-Type=application/json

则django无法为我们转换,我们只能从request.body中获取原始数据,自己进行转换。

2.restframework提供的解析器

如果我们使用restframework,他给我们提供了几个常用的数据解析器,列表如下:

from rest_framework import parsers

# 处理json数据,media_type = ‘application/json‘
parsers.JSONParser
# 处理x-www-form-urlencoded数据,media_type = ‘application/x-www-form-urlencoded‘
parsers.FormParser
# 处理multipart/form-data数据,media_type = ‘multipart/form-data‘
parsers.MultiPartParser
# 处理所有数据,media_type = ‘*/*‘
parsers.FileUploadParser

如果我们在视图类中不指定需要使用的解析器,则默认会使用三种:

在APIView类中可以看到:

class APIView(View):

    # The following policies may be set at either globally, or per-view.
    renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES
    parser_classes = api_settings.DEFAULT_PARSER_CLASSES
    authentication_classes = api_settings.DEFAULT_AUTHENTICATION_CLASSES
    ...
    ...

在DEFAULTS中找到 DEFAULT_PARSER_CLASSES :

DEFAULT_PARSER_CLASSES: [
    rest_framework.parsers.JSONParser,
    rest_framework.parsers.FormParser,
    rest_framework.parsers.MultiPartParser
],

默认使用了JSONParser、FormParser和MultiPartParser三种解析器。

3.在视图类中指定可以使用的解析器

class LoginView(APIView):
    authentication_classes = []
    parser_classes = [parsers.JSONParser,parsers.FormParser]
    ...
    ...

我们可以在视图类中使用parser_classes列表来指定该视图类可以使用的解析器。

当然,我们也可以仿造JSONParser等解析器实现自己的解析器。

 

66

 

[Python自学] restframework (5) (解析器)

标签:默认   指定   media   code   class   处理   框架   auth   data   

原文地址:https://www.cnblogs.com/leokale-zz/p/12238449.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!