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

如何通过Ajax将JSON数据传递至Django视图并获取数据

Django视图接收Ajax JSON数据的修改方案

问题原因

你当前的Ajax请求是以JSON格式发送数据,但Django的request.POST仅用于解析application/x-www-form-urlencoded或multipart/form-data类型的表单数据,所以无法获取到你传递的JSON内容。

修改步骤

1. 前端Ajax代码(无需修改,确认即可)

你的Ajax代码已经正确设置了请求头和数据格式,确保items变量是你提供的发票条目数组即可:

$.ajax({
    type: 'POST',
    url: "{% url 'get-invoice-items'%}",
    headers: {
        "X-CSRFToken": '{{ csrf_token }}'
    },
    data: JSON.stringify(items),
    success: function(data) { console.log("data",data) },
    contentType: "application/json",
    dataType: 'json',
})
.done(function(response){
    console.log(response)
})
.fail(function(response){
    console.log(response)
});

2. 后端Django视图代码修改

需要读取请求体的原始数据,再解析为JSON对象:

import json
from django.http import JsonResponse

def get_invoice_items(request):
    if request.method == "POST":
        # 读取请求体的原始数据并解析为JSON
        data = json.loads(request.body)
        # 打印传递过来的发票条目数据
        print(data)
       
    return JsonResponse({"message" : "Request Handled.."})

说明

  • request.body是请求的原始字节内容,通过json.loads()可以将其解析为Python字典/列表对象,也就是你传递的发票条目数组。
  • 如果需要对数据做进一步处理(比如验证、保存到数据库),直接操作data变量即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:54:04