我可以使用django' s request.POST
解析以下内容:
>>> r = requests.POST(url, data={'name': 'david'})
# in view
name = request.POST.get('name') # 'david'
但是,如果我将这些数据编码为json,我无法得到它,我必须使用request.body
:
>>> r = requests.POST(url, data=json.dumps({'name': 'david'}))
# in view
name = request.POST.get('name') # empty string
name = request.body.get('name') # 'david'
为什么django如果在json中解析POST数据呢?
答案 0 :(得分:1)
request.POST
用于访问传统的html表单数据,request.body
用于所有其他格式(xml,json等)。 raw_post_data
在较新的django版本中已弃用,其后续版本为request.body
。此外,即使通过request.body
访问它,也必须反序列化传入的json数据,例如:json.loads(request.body)
在官方文档中可以找到有关HttpRequest.body
和HttpRequest.POST
的更多信息:
https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.body