繁体   English   中英

在 Django 上通过 Javascript 发送 POST 请求 - 无法检索数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM