- admin.py中的form有效性检查
假设提交的表单中有email项,即attriN中有email项。我们要对输入的email做检查。
实际上,在models.py中定义attriN时,指定了modelField,modelField会在form提交时对输入的attriN做检查,但是是粗粒度的。比如models.EmailField会判断输入是否为email,但不会检查是否是163、gmail还是其他邮箱。。
如果要检查提交的内容的长度,对特定邮箱的判断的话就需要做validation检查了。
from django import forms
from .models import AppName
class AppNameForm(forms.ModelForm):
class Meta:
model = AppName
fields = ["attri1","attri2","attri3"]
#假设存在一个email项
#当点击submit按钮是会清空掉email项中的内容,
#此时执行这个函数,把return的内容显示在email项中,如果为空,则email中啥都没有。
#检查的顺序应该是首先models.EmailField检查一遍,在运行这个clean_email检查一遍,最后在运行EmailField检查一遍
def clean_email(self):
email = self.cleaned_data.get('email')
email_base, email_provider = email.split('@')
email_domain,email_extension = email_provider.split('.')
if not email_domain == '163'
raise.formsValidationError("you should input 163 email")#抛出错误
return email #实际上被写入的email的值
def clean_otherAttri(self):
xx=self.cleaned_data.get('otherAttri')
.....
return xx