django ajax MultiValueDictKeyError

时间:2017-11-14 11:10:50

标签: ajax django

我收到此错误:

MultiValueDictKeyError at /orders/ajax/add_order_line
"'cart'"

这是我的剧本

var cart = {
    0: {
        id: "1",
        quantity: 50
    }
}

$.ajax({
    url: myURL,
    type: "post",
    data: {cart: cart},
    success: function() {},
    error: function(){}
});

同时在我的django视图中,错误发生在这一行:

def something(request):
    cart = request.POST['cart']

2 个答案:

答案 0 :(得分:0)

使用多值的get方法

request.POST.get('cart')

答案 1 :(得分:0)

您的数据是嵌套数组,因此您无法使用默认的默认application/x-www-form-urlencoded内容类型发送数据。

您可以将数据发送为json:

$.ajax({
    url: myURL,
    type: "post",
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify({cart: cart}),
    success: function() {},
    error: function(){}
});

然后在您的视图中,您必须从request.body加载json字符串,而不是使用request.POST(仅用于表单编码数据)。

import json

def my_view(reqest):
    data = json.loads(request.body.decode('utf-8'))
    cart = data.get('cart')