app.auth.form 源代码

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField, SubmitField
from wtforms.validators import Required, Length, Email, Regexp, EqualTo
from wtforms import ValidationError
from ..models import User

[文档]class LoginForm(FlaskForm): """ 登录表单 """ email = StringField('邮箱', validators=[Required(), Length(1,64),Email()]) password = PasswordField('密码', validators=[Required()]) remember_me = BooleanField("记住我?") submit = SubmitField("登录")
[文档]class RegistrantionForm(FlaskForm): """ .. note:: 注册表单 使用 WTForms 提供的 Regexp 验证函数, 确保 username 字段只包含字母、数字和下划线。 安全起见,密码要输入两次。此时要验证两个密码字段中的值是否一致, 这种验证使用WTForms 提供的 EqualTo 验证函数实现。 """ email = StringField('邮箱', validators=[Required(), Length(1,64), Email()]) username = StringField('用户名', validators=[Required(), Length(1,32), Regexp('^[A-Za-z][A-Za-z0-9_]*$', 0, '用户名必须只能包含字母、数字和下划线')]) password = PasswordField('密码', validators=[Required(), EqualTo('password2', message='密码必须一致!')]) password2 = PasswordField('确认密码', validators=[Required()]) submit = SubmitField('注册')
[文档] def validate_email(self, field): """ .. note:: 为 email 字段定义了验证函数 确保填写的值在数据库中没出现过。 自定义的验证函数要想表示验证失败, 可以抛出 ValidationError 异常,其参数就是错误消息。 """ if User.query.filter_by(email=field.data).first(): raise ValidationError('该邮箱已被注册!')
[文档] def validate_username(self, field): """ .. note:: 为 username 字段定义了验证函数 确保填写的值在数据库中没出现过。 自定义的验证函数要想表示验证失败, 可以抛出 ValidationError 异常,其参数就是错误消息。 """ if User.query.filter_by(username=field.data).first(): raise ValidationError('该用户名已被使用!')
[文档]class ChangePasswordForm(FlaskForm): """ 修改密码表单 """ old_password = PasswordField('旧密码', validators=[Required()]) password = PasswordField('新密码', validators=[ Required(), EqualTo('password2', message='密码必须一致!')]) password2 = PasswordField('确认密码', validators=[Required()]) submit = SubmitField('修改密码')
[文档]class PasswordResetRequestForm(FlaskForm): """ 重置密码请求表单 """ email = StringField('邮箱', validators=[Required(), Length(1, 64), Email()]) submit = SubmitField('重置密码')
[文档]class PasswordResetForm(FlaskForm): """ 重置密码表单 """ email = StringField('邮箱', validators=[Required(), Length(1, 64), Email()]) password = PasswordField('新密码', validators=[ Required(), EqualTo('password2', message='密码必须一致!')]) password2 = PasswordField('确认密码', validators=[Required()]) submit = SubmitField('重置密码')
[文档] def validate_email(self, field): if User.query.filter_by(email=field.data).first() is None: raise ValidationError('请输入正确的邮箱!')
[文档]class ChangeEmailForm(FlaskForm): """ 修改邮箱表单 """ email = StringField('新邮箱', validators=[Required(), Length(1, 64), Email()]) password = PasswordField('密码', validators=[Required()]) submit = SubmitField('修改邮箱')
[文档] def validate_email(self, field): if User.query.filter_by(email=field.data).first(): raise ValidationError('该邮箱已被使用!')