django restframework学习笔记:解析器

作用

之前使用 request.data 获取请求体中的数据。

这个 reqeust.data 的数据怎么来的呢?其实在drf内部是由解析器,根据请求者传入的数据格式 + 请求头来进行处理。

JSONParser

FormParser

MultiPartParser(*)

既可以上传文件,也可以上传数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:8000/test/" method="post" enctype="multipart/form-data">
<input type="text" name="user" />
<input type="file" name="img">

<input type="submit" value="提交">

</form>
</body>
</html>

FileUploadParser(*)

默认配置

不写解析器,默认全局解析器

建议对应单独的解析器,以免出现异常

解析器可以设置多个,默认解析器:

1
from rest_framework.views import APIViewfrom rest_framework.response import Responsefrom rest_framework.parsers import MultiPartParser, JSONParser, FormParserclass UserView(APIView):    def post(self, request):        print(request.content_type)        print(request.data)        return Response("...")