【问题标题】:Why does DRF receive my jquery ajax request as arrays?为什么 DRF 将我的 jquery ajax 请求作为数组接收?
【发布时间】:2019-09-30 18:59:34
【问题描述】:

我有以下问题:
我打电话给 $.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']}

这里出了什么问题?

【问题讨论】:

    标签: jquery ajax django-rest-framework


    【解决方案1】:

    所以答案是:

    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表单编码,所以在viewset中我需要添加

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

    这让我着迷

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

    我一直在寻找。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-13
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 2015-09-14
      • 2019-10-06
      相关资源
      最近更新 更多