我从Jquery AJAX转到Axios,因为我使用的是ReactJS,所以我认为它比较干净,我有一些麻烦向服务器发布一个简单的请求,post方法通过我的观点,但只要我print(request.POST)
我有一个空的查询集(<QueryDict: {}>
)。
这是JS:
axios({
method: 'post',
url: SITE_DOMAIN_NAME + '/my_url_name/', #http://127.0.0.1:8000/my_url_name
data: {
'tes1':'test',
'tes2':'test'
},
headers: {
"X-CSRFToken": CSRF_TOKEN,
"content-type": "application/json" #tried without content-type too.
}
}).then(function (response) {
console.log(response)
}).catch(function (error) {
console.log(error)
});
Django视图是一个简单的ClassBasedView。
我做错了什么?
答案 0 :(得分:7)
request.POST
仅适用于表单编码数据。如果您要发布JSON,那么您应该使用request.body
代替。
import json
json.loads(request.body.decode('utf-8'))
如果您这样做,则必须对基于班级的视图进行更改才能使用request.body
。
如果你想让axios发送表格编码数据,GitHub上的this issue可能有帮助。