post 申请报文中既能够传 data,也能够传 json。并且 data 与 json,既能够是 str 类型,也能够是 dict 类型。
json 与 data 参数规定:
一、JSON
1. 应用 json 参数,不论报文是 str 类型,还是 dict 类型,如果不指定 headers 中 content-type 的类型,默认是:application/json。
二、DATA
1. 应用 data 参数,报文是 dict 类型,如果不指定 headers 中 content-type 的类型,默认 application/x-www-form-urlencoded,相当于一般 form 表单提交的模式,会将表单内的数据转换成键值对,此时数据能够从 request.POST 外面获取,而 request.body 的内容则为 a =1&b= 2 的这种键值对模式。
留神:即便指定 content-type=application/json,request.body 的值也是相似于 a =1&b=2,所以并不能用 json.loads(request.body.decode()) 失去想要的值。
2. 应用 data 参数,报文是 str 类型,如果不指定 headers 中 content-type 的类型,默认 application/json。
综上所述,两种参数的应用状况:
用 data 参数提交数据时,request.body 的内容则为 a =1&b= 2 的这种模式,用 json 参数提交数据时,request.body 的内容则为 '{“a”: 1, “b”: 2}’ 的这种模式