[英]Sending a POST request through Javascript on Django - failed to retrieve data
我正在尝试使用普通的 javascript 向我的 Django 视图发送 POST 请求(我不希望涉及任何不必要的库)。 数据不是通过表单发送,而是使用fetch
。 现在我只想能够在我的 views.py 中操作request.POST
,仅此而已。
这是我的代码:
Javascript
let article = document.querySelector('article')
articleId = article.getAttribute('data-product-id')
# some other stuff
fetch("{% url 'shop:shoplist' 1 %}", {
method: 'POST',
dataType: "application/json",
data: {'article_id': articleId},
headers: {'X-CSRFToken': csrf_token}
})
Python
if request.method == 'POST':
testing = request.POST
return JsonResponse({'test': testing})
请求已发送, csrftoken
已正确接收,但request.POST
仅返回<QueryDict: {}>
,而不是我所期望的(标头、数据...)。
我搜索并发现了很多类似的问题,最相似的是this one ,但我似乎仍然找不到解决方案。
任何的想法?
尝试将 'content-type' 添加到fetch
调用中的标题(而不是 dataType 参数),并将数据参数更改为带有字符串化对象的正文:
fetch("{% url 'shop:shoplist' 1 %}", {
method: 'POST',
body: JSON.stringify({'article_id': articleId}),
headers: {
'X-CSRFToken': csrf_token,
'Content-Type': 'application/json'
}})
request.POST
仅包含表单编码的参数。 由于您的数据类型是application/json
因此它们是空的。 request.body
包含实际的 json 数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.