传输数据的格式要求:name=alex&age=12&gender=boy,不是json格式
Note
只有同时满足上述两个条件时,post过来的内容才能正确的解析出来, form表单提交的是否默认的符合要求
不用解析器的情况下,获取post过来的数据:
data = '12345'
data_dic = request._request.GET.get('data')
使用框架提供的解析器,解析并获取post过来的内容
Note
1.JSONParser表示只能处理Content-Type: application/json格式的,其他类型的不支持,这种数据格式在api通信中最为常用
允许用户发送json格式数据: a. content-type: application/jsonb. {‘name‘: ‘alex‘, ‘age‘: 12}
2.FormParser表示只能处理Content-Type:x-www-form-urlencoded格式的数据
这是一个列表,可以写多个,这样系统可以处理多种格式数据
解析器的局部配置
from rest_framework.parsers import JsonParser, FormParser
class ParserView(APIView):
parser_classes = [JsonParser, FormParser]
def post(self, request, *args, **kwargs):
data_dict = request.data
# 通过.data来获取解析过来的数据内容
return Response("解析数据成功")
视图设置
class ParserView(APIView):
parser_classes = [JsonParser, FormParser]
def post(self, request, *args, **kwargs):
data_dict = request.data
# 通过.data来获取解析过来的数据内容
return Response("解析数据成功")
settings.py文件配置
REST_FRAMEWORK = {
'DEFAULT_PARSER_CLASSES': ['rest_framework.parsers.JSONParser', 'rest_framework.parsers.FormParser']
# 解析器的全局配置
}
原文:https://www.cnblogs.com/ddzc/p/12134074.html