D3v5 и Django Rest Framework - PullRequest
       1

D3v5 и Django Rest Framework

0 голосов
/ 10 сентября 2018

У меня возникли проблемы с выполнением следующего вызова AJAX.Я использую D3 версии 5, чтобы сделать следующий запрос POST для представления ModelViewSet (версия 3.x) Django REST Framework (DRF).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 AJAX, примеры D3 и стек SOВопросы, но все они относятся к интерфейсу D3-Request, и я не могу найти примеров использования более нового API D3-Fetch, как указано выше.

1 Ответ

0 голосов
/ 20 сентября 2018

Благодаря @dkarchmer я решил, что мне нужно больше информации на стороне сервера. Следующий миксин был весьма полезен для отображения как полученных, так и переданных данных.

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 результаты, когда данные искажены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...