2014-05-18 53 views
4

我有一個非常簡單的Django形式Django的表單驗證:得到錯誤JSON格式

from django import forms 

class RegistrationForm(forms.Form): 
    Username = forms.CharField() 
    Password = forms.CharField() 

我手動管理這一點,並沒有使用模板引擎。相反,我使用ajax POST發送數據,並希望收到驗證錯誤。當我使用其他框架時,我曾經以鍵值對的形式接收JSON格式的驗證錯誤(關鍵字是錯誤字段的名稱,值是錯誤信息)。

{ 
    Username: "This field is required.", 
    Password: "This field is required.", 
} 

我試圖達到同樣的效果在Django,但我不明白我怎麼能訪問原始的錯誤消息(相對於單場)和本地化它們。

form.errors可以訪問HTML代碼(如此處所述:displaying django form validation errors for ModelForms)。我不需要那個。我喜歡form.Username.validationError之類的東西:這樣的事情存在嗎?

如果是,另外我還想知道驗證錯誤消息是否會自動轉換爲用戶語言,如果不是,最好的方法是做到這一點。

+1

相關:http://stackoverflow.com/questions/986406/returning-pure-django-form-errors-in-json – alecxe

+0

感謝!我沒有注意到我自己,我感到很蠢。現在閱讀。 – Saturnix

+0

是的,form.errors.items()解決了這個問題 - 仍然需要本地化消息思想。 – Saturnix

回答

5

Django 1.7讓你發送forms errors as Json。您只需要使用以下形式form.errors.as_json()中的錯誤。

這是我必須說的圖書館的一個很好的補充。

2
#from django.http import JsonResponse  

return JsonResponse({'success': False, 
         'errors': [(k, v[0]) for k, v in form.errors.items()]})