[Python自学] restframework (解析器)
Posted 风间悠香
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Python自学] restframework (解析器)相关的知识,希望对你有一定的参考价值。
一、数据解析器
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 (解析器)的主要内容,如果未能解决你的问题,请参考以下文章
[Python自学] restframework (解析器)