You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中如何获取POST请求携带的非表单格式JSON数据

问题原因

你的AJAX请求显式指定了contentType: 'application/json; charset=utf-8',提交的数据为JSON编码格式。Django的request.POST对象仅会自动解析application/x-www-form-urlencoded和multipart/form-data两种编码的请求数据,因此无法直接通过request.POST获取参数。

解决方案
  • 方案1:调整前端AJAX配置,使用默认表单编码
    删掉AJAX配置里的contentType: 'application/json; charset=utf-8'行即可,jQuery默认会使用表单编码提交数据,修改后的AJAX代码示例:

    $.ajax({
      url: $basicAnalysisChart.data("url"),
      type: "POST",
      headers:{
        "X-CSRFToken": csrftoken
      },
      dataType: "json",
      data:{
        selector1:$("#Select1").val(),
        selector2:$("#Select2").val()
      },
      // 其他原有配置
    })
    

    此时后端可直接通过request.POST.get("selector1", "")获取对应参数值,注意参数名要和你提交的data里的键名一致,不要写成Select1。

  • 方案2:保持前端配置不变,后端解析JSON请求体
    在Django视图中读取request.body并解析为JSON格式即可,代码示例:

    import json
    
    def your_view(request):
        if request.method == "POST":
            # 解析JSON格式的请求体
            req_data = json.loads(request.body)
            # Django 3.1及以上版本可直接用下方写法替代上一行,无需手动导入json模块
            # req_data = request.json()
            selector1 = req_data.get("selector1", "")
            selector2 = req_data.get("selector2", "")
            # 后续业务逻辑
    

内容的提问来源于stack exchange,提问作者Felix_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:18:02