让以下AJAX调用无法正常工作。我正在使用D3版本5向Django REST Framework(DRF)ModelViewSet(版本3.x)视图发出以下POST请求。 DRF提供了路径/gander/tasks/
下的任务列表,并允许通过向同一路径POST'创建一个新任务。我相信我正在正确检索CSRF令牌,但不确定我是否正确制定了POST。
d3.json("/gander/tasks/?format=json",
{method:"POST",
headers:{
"Content-type": "application/json; charset=UTF-8",
"X-CSRFToken" : Cookies.get('csrftoken') },
body:JSON.stringify({
"parent": null,
"name" : "",
"time" : null}),
})
.then(json => {console.log(json);})
.catch(error => {console.log(error);});
我经历了Django A.J.A.X. docs,D3示例和一堆S.O。有问题,但是它们都引用了D3-Request接口,使用上述更新的D3-Fetch API我找不到任何示例。
答案 0 :(得分:0)
由于@dkarchmer,我认为我需要服务器端的更多信息。下面的mixin对于显示接收和发送的数据非常有用。
class AjaxLoggingMixin(object):
def finalize_response(self, request, response, *args, **kwargs):
print(request.data)
print(response.data)
return super().finalize_response(request, response, *args, **kwargs)
事实证明,请求正确无误,但格式有误,Django拒绝了它们,返回了4XX错误代码。特别是
403的结果是用户未通过身份验证或用户身份验证未正确设置。
400。