标签:默认 指定 media code class 处理 框架 auth data
在我们使用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中获取原始数据,自己进行转换。
如果我们使用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三种解析器。
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