我的 javascript fetch API 调用有什么问题?
What is wrong with my javascript fetch API call?
我对 Django 后端服务器进行了 javascript 提取 API 调用
const res = fetch(url, {
credentials: 'include',
method: 'POST',
mode: 'same-origin',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-CSRFToken': csrftoken
},
body: JSON.stringify(requestBody),
})
.then((response) => response.json())
.then((responseJson) => {
return responseJson.movies;
})
.catch((error) => {
console.error(error);
});
如果我在请求中使用它之前在控制台上输出 requestBody,它看起来如下
{"add-Choice":["L"],"add-Left":["1"],"add-Right":["1"],"add-Value":["100"],"add-match":["8"],"user":["siteuser1"],"csrfmiddlewaretoken":["3K89ZvofjhIL2nZQoCcxphjmXborujsaLPn2FzlYiVmiBLODWhQQiAB5BhSXkQcF"],"add":["Submit"]}
此处字符串“add-”用作 Django 侧视图 post 方法的表单前缀。
但是,在服务器视图端,如果我打印 request.POST 如下
def post(self, request, *args, **kwargs):
print('Post request: ', request.POST)
我得到的输出是一个空的 QueryDict,如下所示
Post request: <QueryDict: {}>
Internal Server Error: /matchoffers/8
请求被发送到正确的 URL 并被提取正确的视图-post 方法。但是它失败了,因为请求是空的。
If you're doing REST-based web service stuff ... you should ignore
request.POST.
— Malcom Tredinnick, Django developers group
我对 Django 后端服务器进行了 javascript 提取 API 调用
const res = fetch(url, {
credentials: 'include',
method: 'POST',
mode: 'same-origin',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-CSRFToken': csrftoken
},
body: JSON.stringify(requestBody),
})
.then((response) => response.json())
.then((responseJson) => {
return responseJson.movies;
})
.catch((error) => {
console.error(error);
});
如果我在请求中使用它之前在控制台上输出 requestBody,它看起来如下
{"add-Choice":["L"],"add-Left":["1"],"add-Right":["1"],"add-Value":["100"],"add-match":["8"],"user":["siteuser1"],"csrfmiddlewaretoken":["3K89ZvofjhIL2nZQoCcxphjmXborujsaLPn2FzlYiVmiBLODWhQQiAB5BhSXkQcF"],"add":["Submit"]}
此处字符串“add-”用作 Django 侧视图 post 方法的表单前缀。 但是,在服务器视图端,如果我打印 request.POST 如下
def post(self, request, *args, **kwargs):
print('Post request: ', request.POST)
我得到的输出是一个空的 QueryDict,如下所示
Post request: <QueryDict: {}>
Internal Server Error: /matchoffers/8
请求被发送到正确的 URL 并被提取正确的视图-post 方法。但是它失败了,因为请求是空的。
If you're doing REST-based web service stuff ... you should ignore request.POST.
— Malcom Tredinnick, Django developers group