最近在学flask框架 写到注册登录这里 有一个疑问是 在做验证码和邮箱是否存在吻合的验证时重写了validate函数
但是不理解网上的用法,为什么会传self,field两个参数
class RegisterForm(wtforms.Form):
# 做字数的基础判断验证
username = wtforms.StringField(validators=[length(min=3, max=20)])
email = wtforms.StringField(validators=[email()])
captcha = wtforms.StringField(validators=[length(min=4, max=4)])
# 密码一定要设置为两百以上 因为后面会使用加密 字符串会很长 所以最少设置为200
password = wtforms.StringField(validators=[length(min=6, max=20)])
password_confirm = wtforms.StringField(validators=[EqualTo("password")])
# 判断验证码是否和数据库的一致
def validate_captcha(self,field):
captcha = field.data
email = self.email.data
captcha_model = EmailCaptchaModel.query.filter_by(email=email).first()
# 如果captcha_model 不存在 或者数据库captch字段不等于表单captcha字段
if not captcha_model or captcha_model.captcha.lower() != captcha.lower():
# 异常返回
raise wtforms.ValidationError("邮箱验证码错误")
# 判断email是否存在
def validate_email(self,field):
email = field.data
user_model = UserModel.query.filter_by(email=email).first()
if user_model:
raise wtforms.ValidationError("邮箱已经存在!")
是能正常运行的,此处就没有截图了 但是我在想为什么不能全部用self.email.data这样的方式写呢 field的意义是什么呢