Почему DRF получает мой запрос jquery ajax в виде массивов? - PullRequest
2 голосов
/ 30 сентября 2019

У меня следующая проблема:
Я звоню $ .ajax:

$.ajax({
  type: "POST",
  url: '/endpoint',
  headers: {"X-CSRFToken": csrf_token},
  data: { 
    'action': 'my-action', 
    'data': {'text': 'blah'}
});

, и в Django Rest Framework я получаю странную информацию

request.data == {'action': ['my-action'], 'data[text]':['blah']}

Что здесь не так?

1 Ответ

0 голосов
/ 30 сентября 2019

Таким образом, ответ был:

1.) JQuery отправил запрос с неверной кодировкой, необходимо добавить

$.ajax({
  type: "POST",
  url: '/endpoint',
  headers: {"X-CSRFToken": csrf_token},
  contentType: 'application/json',  // <-- this
  data: { 
    'action': 'my-action', 
    'data': {'text': 'blah'}
});

2.) DRF анализирует кодировку www-формы по умолчанию, поэтомув наборе мне нужно было добавить

class MyViewSet(viewsets.ModelViewSet):
    parser_classes = [JSONParser]

, и это дало мне

request.data == {'action': 'my-action', 'data': {'text': 'blah'}}

, который я искал.

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