【发布时间】:2018-02-02 08:33:58
【问题描述】:
在使用 Ajax 处理 Django 表单的 POST 请求时,通常如何处理验证错误?
我是一名服务器端开发人员,涉足一点纯 JS 来学习技巧。我完成了 AJAX 方法来处理 Django 表单的 POST 请求,但现在不确定如何呈现验证错误。
例如,这是一个简单的 Django 表单:
class TextForm(forms.Form):
reply = forms.CharField(widget=forms.Textarea(attrs={'cols':30,'class': 'cxl','autocomplete': 'off','autofocus': 'autofocus'}))
def __init__(self,*args,**kwargs):
super(TextForm, self).__init__(*args,**kwargs)
self.fields['reply'].widget.attrs['id'] = 'text_field'
def clean(self):
data = self.cleaned_data
reply = data["reply"].strip()
if not reply:
raise forms.ValidationError('Write something')
elif len(reply) > 1500:
raise forms.ValidationError("Can't exceed 1500 chars")
return reply
下面是 Ajax 请求的工作原理:
function overwrite_default_submit(e) {
// block the default behavior
e.preventDefault();
// create and populate the form with data
var form_data = new FormData();
form_data.append("reply", text_field.value);
// send the form via AJAX
var xhr = new XMLHttpRequest();
xhr.open('POST', e.target.action);
xhr.setRequestHeader("X-CSRFToken", get_cookie('csrftoken'));
xhr.send(form_data);
}
在这种情况下捕获和显示验证错误的最佳模式是什么?此外,如果涉及文件上传字段怎么办?希望看到专家如何做到这一点的说明性示例。
注意:在这一点上我更喜欢纯 JS,因为这是我开始的。 JQuery 在我的雷达上,但我会在未来看看它。
【问题讨论】:
标签: javascript django