如何在Django中使用form.errors.as_JSON()解析JSON返回JsonResponse(数据)
在Django中,我尝试使用form.errors.as_json()获取所有表单错误,下面是json数据字符串示例如何在Django中使用form.errors.as_JSON()解析JSON返回JsonResponse(数据),json,django,parsing,Json,Django,Parsing,在Django中,我尝试使用form.errors.as_json()获取所有表单错误,下面是json数据字符串示例 {"password2":[{"message": "This password is too short. It must contain at least 8 characters.","code":"password_too_short"}]} 我想循环并获取json中“message”键下的所有内容,以便在ajax调用后使用它通知用户 谢谢无论如何,我刚刚解决了我的问
{"password2":[{"message": "This password is too short. It must
contain at least 8 characters.","code":"password_too_short"}]}
我想循环并获取json中“message”键下的所有内容,以便在ajax调用后使用它通知用户
谢谢无论如何,我刚刚解决了我的问题,只想分享我所做的 视图.py
if form.is_valid():
...
else:
# Extract form.errors
errMsg= None
errMsg = [(k, v[0]) for k, v in form.errors.items()]
return JsonResponse(errMsg)
Ajax事件
$.ajax({
method: "POST",
url: '\your_url_here',
data: $form.serialize(),
cache: false,
dataType: "json",
beforeSend: function(){
//Start displaying button's working animation
//Do some button or loading animation here...
}
},
success: function(jResults)
{
//This line is to remove field name display
var strErr = jResults + ''; //make json object as string
strErr = strErr.split(",").pop();
alert(strErr);
}
});
希望这对任何面临类似问题的人都有帮助。顺便说一下,我正在使用Django 2.0和Python 3.6+
谢谢
MinedBP正确答案应该是:
返回HttpReponse(form.errors.as_json(),status=400)
在AJAX调用中,您可以通过以下方式获取内容:
`$.post("{% url 'your_url'%}", your_payload).done(function(data) {
do_something();
}).fail(function(xhr){
// Here you can get the form's errors and iterate over them.
xhr.responseText();
});`
您正在发送一个200 HTTP响应,这是错误的,您应该返回一个400 HTTP响应(错误请求),就像Django在没有AJAX表单的情况下所做的那样。尝试使用
转储文件。
。这正是我一直在搜索的内容。这真是奇迹!!荣誉