Python AJAXing时使用django而不是JSON进行查询

Python AJAXing时使用django而不是JSON进行查询,python,django,ajax,Python,Django,Ajax,我在javascript页面上有8个ajax调用 7是这样的,请转到Django中python中的相同视图进行解析和填充: $.ajax({ url: '/apiForStuff", type: 'POST', cache: false, data: JSON.stringify({'boxStuff': stuff}), contentType: "application/json", dataType: 'json

我在javascript页面上有8个ajax调用

7是这样的,请转到Django中python中的相同视图进行解析和填充:

$.ajax({
    url: '/apiForStuff",
    type: 'POST',
    cache: false,
    data: JSON.stringify({'boxStuff': stuff}),
    contentType: "application/json",
    dataType: 'json',
    success: function(data) {
        table.reload()
    },
    error: function(err) {
        console.log('err', err)
    }
});
1是这样的:

$.ajax({
        url: '/otherAPIStuff",
        data: formData,
        type: 'POST',
        cache: false,
        contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
        processData: false,
        dataType: 'json',
        success: function(data) {
            table.reload()
            
        },
        'error': function(err) {
            console.log('err', err)
        }
    });
第一个调用的视图(以及六个类似的视图):

print语句打印一个QueryDict,json.loads继续失败:

TypeError: the JSON object must be str, bytes or bytearray, not QueryDict

您要做的是将(Django已经使用请求体转换的对象)转换为字典,使用(只需要
str
字节
bytearray
实例)。

如果需要访问请求中发布的原始或非表单数据,请改为通过属性访问它


以下是一段摘录:

request.POST/request.GET
HttpRequest对象中,GETPOST属性是 类字典的类
django.http.QueryDict
的实例 自定义以处理同一密钥的多个值。这是 必要的,因为一些HTML表单元素, 为同一个键传递多个值

request.POST
request.GET
处的查询信息是不可变的 在正常请求/响应周期中访问时。得到一个可变的 您需要使用
request.POST.copy()
request.GET.copy()
的版本


您不能使用
json.loads
,根据定义,此方法应用于 使用此转换表将s(包含JSON文档的str、bytes或bytearray实例)反序列化为Python对象

根据定义,在
HttpRequest
(django)对象中,GET和POST属性是
django.http.QueryDict
的实例,这是一个类似字典的类,可定制用于处理同一键的多个值

因此,您可以将
QueryDict
转换为
dict
,如下所示

myDict = dict(queryDict.iterlists())

试试
json.loads(request.body)
你不需要把它转换成json,它已经是一个对象了。伙计,这很简单;-)把它写下来作为答案,这样我就可以接受了
myDict = dict(queryDict.iterlists())