由于布尔值变化,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)
我正在尝试从 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)