如何在Django中使用form.errors.as_JSON()解析JSON返回JsonResponse(数据)

如何在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调用后使用它通知用户 谢谢无论如何,我刚刚解决了我的问

在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调用后使用它通知用户


谢谢

无论如何,我刚刚解决了我的问题,只想分享我所做的

视图.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表单的情况下所做的那样。

尝试使用
转储文件。
。这正是我一直在搜索的内容。这真是奇迹!!荣誉