码迷,mamicode.com
首页 > 其他好文 > 详细

Django表单字段的验证方式

时间:2017-08-04 22:53:38      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:字段   class   调用   inf   email   forms   date   val   super   

一、给表单的字段添加验证器

In your forms.py

 1 def validate_name(value):
 2     try:
 3         # 查询存在的话抛出异常
 4         User.objects.get(username=value)
 5         raise ValueError("%s的用户已经存在"%value)
 6     except User.DoesNotExist:
 7         pass
 8 
 9 from blogapp.models import User
10 class Loginfm(forms.ModelForm):
11     # 与ModelForm中字段重名不会添加,这里用于给字段加验证器
12     username=forms.CharField(validators=[validate_name])
13     class Meta():
14         model=User
15         exclude=("id",email)

如果username已经存于数据库当中,提交时抛出已经存在的异常

 

二、clean_fieldname

针对某个字段进行验证

In your forms.py

 1 from blogapp.models import User
 2 class Loginfm(forms.ModelForm):
 3     
 4     # clean_username为User类的一个方法
 5     # self代表表单自己
 6     def clean_username(self):
 7         value=self.cleaned_data.get("username")
 8         try:
 9             User.objects.get(username=value)
10             raise ValueError("%s的用户信息已经存在"%value)
11         except User.DoesNotExist:
12             pass
13         return value
14 
15     class Meta():
16         model=User
17         exclude=("id",email)

 

三、clean方法

可用于对整个表单进行验证

In forms.py

 1 from blogapp.models import User
 2 class Loginfm(forms.ModelForm):
 3     def clean(self):
 4         # 调用父类的方法
 5         # 获取表单所有的数据
 6         cleaned_data=super(Loginfm,self).clean()
 7         value=cleaned_data.get("username")
 8         try:
 9             User.objects.get(username=value)
10             self._errors[username]=self.error_class(["%s已经存在"%value])
11             
12         except User.DoesNotExist:
13             pass
14         return cleaned_data
15     class Meta():
16         model=User
17         exclude=("id",email)

可以适用注册(两次密码匹配)

Django表单字段的验证方式

标签:字段   class   调用   inf   email   forms   date   val   super   

原文地址:http://www.cnblogs.com/reaptem/p/7287172.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!