2016-04-21 76 views
2

我有一个例外,这使我的错误,从形式像::Python的验证错误的对象不是JSON序列化

except ValidationError as e: 
    return JsonResponse(e, safe=False) 

据giveing我的错误 ValidationError({'age': [u'This field is required.'], 'name': [u'This field is required.']}) is not JSON serializable

为什么我得到这个错误,我怎么能使它工作..任何想法?

+1

?请尝试显示[mcve] – Sayse

+0

@Sayse我张贴从窗体ajax,所以我想发送错误作为回应.. – gamer

+1

不知道你为什么 - - 我。但Sayse的观点仍然有效。表单将验证错误收集到一个错误列表中,这就是你应该序列化。在任何情况下,都不要从表单方法中返回响应。 –

回答

1

您的eValidationError的一个实例,而不是dict。为了访问您可以使用.message_dict属性信息的详细信息:如果您使用的是形式,那么为什么不让形式办理确认为正常

return JsonResponse(e.message_dict, safe=False) 
+0

这是给我错误'字典对象不可调用' – gamer

+0

感谢人..工作就像一个魅力..一个问题..我也试过这个'#response = serializers.serialize('json',e) \t \t \t return JsonResponse(response,safe = False)'为什么它没有工作。它应该序列化这个权利? – gamer

+0

再一次,你的'e'变量是不可序列化的。所以不,这是正常的行为。 – Selcuk