我对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表单错误吗?
答案 0 :(得分:4)
问题是你正在转换为JSON两次 - 一次是在你致电as_json
时,再是当你使用JsonResponse
时。
您可以将HttpResponse
与form.errors.as_json()
:
return HttpResponse(user_form.errors.as_json(), status = 400, content_type='application/json')
请注意as_json
文档中有关转义结果的警告,以避免跨站点脚本攻击。如果您也使用JsonResponse
,则应确保转义结果。