Django表单字段的验证方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django表单字段的验证方式相关的知识,希望对你有一定的参考价值。
一、给表单的字段添加验证器
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表单字段的验证方式的主要内容,如果未能解决你的问题,请参考以下文章