在寻找验证django表单的方法的过程中,我在django文档中遇到了两个方法:is_valid()和clean().有谁能告诉我它们有什么不同/相同之处吗?这两种方法的优缺点是什么?
谢谢
在寻找验证django表单的方法的过程中,我在django文档中遇到了两个方法:is_valid()和clean().有谁能告诉我它们有什么不同/相同之处吗?这两种方法的优缺点是什么?
谢谢
is_valid()
自动调用窗体上的clean()
.在视图中使用is_valid()
,在窗体类中使用clean()
.
您的clean()
函数将返回self.cleaned_data
,如果您在下面的视图中注意到,您作为程序员不会处理它.
form = myforms.SettingsForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
#do stuff
您不必执行clean_data = form.is_valid()
,因为is_valid()
将调用Clean并覆盖要清除的Form对象中的数据.所以你的第if form.is_valid()
个挡路里的一切都是干净有效的.您的挡路中的第name
字段将是经过清理的版本,而不一定是第request.POST
字段中的字段.
Update
self._errors['email'] = [u'Email is already in use']
现在将返回False,所以在Else挡路中,您可以重新显示包含被覆盖的表单对象的页面,如果您的模板使用错误字符串,它将显示错误消息.