在Django上通过Javascript发送POST请求未能检索到d

2024-03-29 14:08:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用纯javascript向我的Django视图发送POST请求(我不希望涉及任何不必要的库)。数据不是通过表单发送的,而是使用fetch。现在我只想在我的系统中操纵request.POST视图.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: {}>,而不是我所期望的(头、数据…)。你知道吗

我搜索并发现了很多类似的问题,最相似的是this one,但我仍然找不到解决办法。你知道吗

你知道吗?你知道吗


Tags: 数据django视图id表单datarequest系统
2条回答

尝试向fetch调用中的头添加“content type”(而不是dataType参数),并将数据参数更改为带有stringized对象的body:

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数据。你知道吗

相关问题 更多 >