javascript - 在 Django 上通过 Javascript 发送 POST 请求 - 检索数据失败

标签 javascript python django

我正在尝试使用普通 javascript 向我的 Django View 发送 POST 请求(我不想涉及任何不必要的库)。数据不是通过表单发送的,而是使用 fetch 发送的。 .现在我只想能够操纵 request.POST在我的 views.py 中,仅此而已。

这是我的代码:
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: {}> ,而不是我所期望的( header 、数据...)。

我搜索并发现了很多类似的问题,最相似的是 this one ,但我似乎仍然找不到解决方案。

有什么想法吗?

最佳答案

尝试在 fetch 调用中将“content-type”添加到 header (而不是 dataType 参数)并将数据参数更改为带有字符串化对象的正文:

fetch("{% url 'shop:shoplist' 1 %}", { 
              method: 'POST',
              body: JSON.stringify({'article_id': articleId}),
              headers: {
                  'X-CSRFToken': csrf_token,
                  'Content-Type': 'application/json'
              }})

关于javascript - 在 Django 上通过 Javascript 发送 POST 请求 - 检索数据失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52995107/

相关文章:

python - strip() 方法如何与append() 方法一起使用?

django - 如何在 Django 通用 View 中添加额外的上下文和查询集字段?

jquery - django 将 "post"识别为 "get"

javascript - 网络音频 API 延迟后停止

javascript - 如何使我的函数在 Node js 中具有循环同步

python - 从 JSON 记录(字典)创建对象

python - Django 出错时渲染管理表单

javascript - $j 不是函数

javascript - 使用JS和Jquery将 'Month and Year'字符串转换成Date对象

Python 正则表达式 - 扩展字符串