解析器:
开始: django: request.POST/ request.body
满足一下两个要求POST中才有值
1. 如果请求头中的 Content-Type: application/x-www-form-urlencodeed, request.POST 中才有值(request.body中解析数据)
2. 数据格式要求:
name-alex$age=18$gender=x
如:
a. form表单提交
<form>
....
....
</form>
b. ajax提交
# request.POST无值,request.body有值
$.ajax{(
url: ...,
type: POST,
headers: {'Content-Type': 'application/json'},
data: {name:x,age=10},
)}
rest_framework的解析器:
from rest_framework.parsers import JSONParser,FormParser
#允许用户发送json格式数据 content-type: application/json
# {"name":"alex","age":10}
class TestView(APIView):
#JSONParser 表示只能解析content-type;application/json头
#FormParser 表示只能解析content-type;application/x-www-form-urlencoded头
parser_classes = [JSONParser,FormParser,]
def post(self,request,*args,**kwargs):
return request.data
全局配置:
"DEFAULT_PARSER_CLASSES": ["rest_framework.parsers.JSONParser", "rest_framework.parsers.FormParser"]
解析器使用就做上全局配置就可以了