在引发验证错误后,使用Django表单填充表单字段

时间:2017-04-12 16:50:42

标签: javascript django

我需要帮助,我是新的django形式o它的工作方式。有一个html表单,我用javascript加密值,当表单像这样提交

$("#form").submit(function(){
    //remplace the original value and send to the server the encrypted data
    $("#field1").val(encrypted_data);
    $("#field2").val(encrypted_data);
return true
});

我的django项目中有这个课程

class SomeForm(forms.Form):

field1 = forms.CharField(label="field 1")
field2 = forms.CharField(label="field 1")

clean_field1(self):
 data = decrypt_text(self.cleaned_data['field1'])
 p = re.compile(r'[\d]{8}')
 #validate decrypt data is a number and his lengt is more than 8
 if p.match(data) is None:
    raise forms.ValidationError("Error")

 return data

这项工作很好,问题是当数据无效时,我需要传递给该字段的原始值,并且当前返回带有de加密值的字段。

提前感谢!!

1 个答案:

答案 0 :(得分:0)

这是你怎么做的: 在基于类的视图中的post()方法中,您将具有此条件

if form.is_valid():
# you do whatever you want with this form
else:
# when your form raises a validation error, this snippet gets executed 
#so you need to write the following lines in the else condition to 
#repopulate your form:
context['form'] = self.form_class(self.request.POST)
return render(request, self.template_name, context)

现在,当您遇到验证错误时,您也可以在模板中看到它。 希望你找到这个有用的