D3v5和Django Rest框架

时间:2018-09-10 15:19:46

标签: django d3.js django-rest-framework

让以下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我找不到任何示例。

1 个答案:

答案 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。