postman向Django-restframework 提交三种数据类型总结

三种常见提交post请求的方式

方式一:json

关键字:

content-type:application/json
parser_classes:JSONParser

视图函数:

class UsersView(APIView):
    parser_classes = [JSONParser, ]
    def post(self, request, *args, **kwargs):
          from rest_framework.request import Request
          print(request._request.body)
          print(request._request.POST)
          print(request.data)
          return Response('....')

POSTMAN设定


postman提交post请求

post有关设置

结果:

request._request.body:  b'{"name":"alxe","pwd":"232323"}'
request._request.POST: 
request.data: {'name': 'alxe', 'pwd': '232323'} #restframework解析后数据

方式二:常规post请求-application/x-www-form-urlencoded

这应该是最常见的 POST 提交数据的方式了。浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。
关键参数

content-type:application/x-www-form-urlencoded
parser_classes:JSONParser
请求头

请求体

打印结果

因为restframework没有设定相应的解析类.所以会有相应报错

"detail": "Unsupported media type \"application/x-www-form-urlencoded\" in request."
parser_classes = [JSONParser, FormParser]
结果

方式三:文件-multipart/form-data

这又是一个常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 form 的 enctyped 等于这个值。
这种方式一般用来上传文件
关键参数

parser_classes = [JSONParser, FormParser, FileUploadParser]
postman
code

结果

Django原始request对象POST:
RFW解析后数据:]}>
Django原始request对象Files:]}>

你可能感兴趣的:(postman向Django-restframework 提交三种数据类型总结)