【问题标题】:Django DRF read json from POST?Django DRF 从 POST 读取 json?
【发布时间】:2026-01-03 18:35:01
【问题描述】:

当我尝试从 jquery POST 发送数据时,我可以从后端获取它们,js 客户端和 python django-rest-framework sefializer 创建方法

console.log 说:

{
  "wo_r": [
    {
      "pk": "17635"
    },
    {
      "pk": "17637"
    }
  ]
}

表单数据显示dict为:

     {
  "wo_r": [
    {
      "pk": "17635"
    },
    {
      "pk": "17637"
    }
  ]
}:

django shell 读取:

<QueryDict: {'{\n  "wo_r": [\n    {\n      "pk": "17635"\n    },\n    {\n      "pk": "17637"\n    }\n  ]\n}': ['']}>

为什么发送的数据最后会出现这个“:”?

这是javascript部分:

  function creaol(indirizzo,val) {

  $.ajax({
      url: indirizzo,
      type: 'POST',
      dataType:'json',
      global: false,
      data :  val,
      //  data : {'wo_r':[
      //               {"pk": "17629"}, {"pk": "17630"},{"pk": "17631"}
      //          ]},
      success: function(result) {
          // Do something with the result
      }
  });
  }


  var dati = JSON.stringify(dict, null, 2);
  creaol(indirizzo, dati );

【问题讨论】:

    标签: javascript jquery json django django-rest-framework


    【解决方案1】:

    您接收的数据有误,请查看 Querydict。

    <QueryDict: {'{\n  "wo_r": [\n    {\n      "pk": "17635"\n    },\n    {\n      "pk": "17637"\n    }\n  ]\n}': ['']}>
    

    JSON 是字典键,值是空列表 ['']。 试试像这样的 ajax 调用传递数据:

    data : {"wo_r": [{"pk": "17629"}, {"pk": "17630"},{"pk": "17631"}]}
    

    并在 django 视图中将数据读取为 request.data Django Rest Frameword request parsing

    同时放入你的ajax调用属性contentType: 'application/json'。

    【讨论】:

    • 指定的 contentType: 'application/json' 现在可以正常工作了。谢谢!