由于布尔值变化,Django 格式错误的字符串在视图中

Django Malformed String in view due to boolean variations

我正在尝试从 javascript 发送的 post 命令中读取一些变量。当我打印视图中收到的变量时,收到以下内容:

>>> print request.body
{"p":"testprd","cash":false,"cheque":true,"debit":false,"credit":true}

现在现金、支票、借记卡信用复选框在html,因此值 "true""false"。但是 python 只读取 "True""False" 因此当我尝试以下操作时,我得到了 Malformed String 错误:

def post(self, request):
    x = ast.literal_eval(request.body)
    p = x.get('p')
    cash = x.get('cash')
    cheque = x.get('cheque')
    debit = x.get('debit')
    credit = x.get('credit')

这就是我从 JS 制作 post 的方式:

var variables = {
        "p": p,
        "cash": cash,
        "cheque": cheque,
        "debit": debit,
        "credit": credit
    }
    $http.post('postproductdetail/', variables).then(function(response){
    }, function(response){
        alert('Unable to save Product');
    });

那么我该如何解决这个问题呢?

您实际上是在发帖 JSON。因此,您应该通过视图中的 json 解码器将其解码为 Python 字典,而不是调用 literal_eval.

x = json.loads(request.body)