如何使用Axios发布到Django?

时间:2018-03-22 13:37:53

标签: javascript django post axios

我从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。

我做错了什么?

1 个答案:

答案 0 :(得分:7)

request.POST仅适用于表单编码数据。如果您要发布JSON,那么您应该使用request.body代替。

import json
json.loads(request.body.decode('utf-8'))

如果您这样做,则必须对基于班级的视图进行更改才能使用request.body

如果你想让axios发送表格编码数据,GitHub上的this issue可能有帮助。