如何使用 Axios 发布到 Django?
Posted
技术标签:
【中文标题】如何使用 Axios 发布到 Django?【英文标题】:How do I post to Django using Axios? 【发布时间】:2018-08-31 23:30:29 【问题描述】:我正在从 Jquery AJAX 迁移到 Axios,因为我使用的是 ReactJS,所以我认为它更干净,我在向服务器发布简单请求时遇到了一些麻烦,post 方法通过我的视图但每当我 print(request.POST)
,我有一个空查询集 (<QueryDict: >
)。
axios(
method: 'post',
url: SITE_DOMAIN_NAME + '/my_url_name/',
data:
'tes1':'test',
'tes2':'test'
,
headers:
"X-CSRFToken": CSRF_TOKEN,
"content-type": "application/json"
).then(function (response)
console.log(response)
).catch(function (error)
console.log(error)
);
Django 视图是一个简单的 ClassBasedView。
我做错了什么?
【问题讨论】:
【参考方案1】:request.POST
仅适用于表单编码数据。如果您发布 JSON,那么您应该使用 request.body
。
import json
json.loads(request.body.decode('utf-8'))
如果您这样做,则必须更改基于类的视图以改用 request.body
。
如果您想让 axios 改为发送表单编码数据,GitHub 上的this issue 可能会有所帮助。
【讨论】:
使用request.body有风险吗? 只使用request.POST
。这是不受信任的输入,因此您应该清理它(例如使用表单)。
@Alasdair - 是否应该始终解码正文 (decode('utf-8')
)?
@Headmaster 我认为是的。见my similar answer。以上是关于如何使用 Axios 发布到 Django?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 react 中使用 graphene-django 和 axios 将图像上传到我的服务器?
如何使用 Axios 将 CSRF Cookie 从 React 发送到 Django Rest Framework
ReactJS 和 Django:如何以正确的方式使用 axios 发送 csrf 令牌?
如何在后端使用 Nuxt 和 Django 在我的 axios 请求中发送 CSRFToken?