使用并进一步解析form.errors.as_json以在Django中返回http响应

时间:2017-01-28 15:07:01

标签: json ajax django

我对JSON和Django表单都比较新。我想知道如何使用Djagno user_form.errors.as_json()将错误消息传输到client-slde。现在,我有以下代码:

在服务器端。我有:

if form.is_valid():
    # some code
else:
    return JsonResponse(user_form.errors.as_json(), status = 400, safe = False)

客户端:

$.post('/url/', data, function(response){
        // Success   
    }).fail(function(response){ 
        var errors = $.parseJSON($.parseJSON(response.responseText)); // looks stupid

akward line $.parseJSON($.parseJSON(response.responseText));证明我做错了什么。任何人都可以提供最佳实践代码模式来发送和解析jsonified表单错误吗?

1 个答案:

答案 0 :(得分:4)

问题是你正在转换为JSON两次 - 一次是在你致电as_json时,再是当你使用JsonResponse时。

您可以将HttpResponseform.errors.as_json()

一起使用
return HttpResponse(user_form.errors.as_json(), status = 400, content_type='application/json')

请注意as_json文档中有关转义结果的警告,以避免跨站点脚本攻击。如果您也使用JsonResponse,则应确保转义结果。