Flask-wtf之form表单

from  flask_wtf  import FlaskForm
from flask_wtf.file import FileRequired, FileAllowed
from wtforms import StringField, PasswordField, SubmitField, FileField
from wtforms.validators import DataRequired, Email, Regexp, EqualTo, ValidationError

from models import User


class LoginForm(FlaskForm):
    name = StringField(
        label='name',
        validators=[
            DataRequired("请输入用户名")
        ],
        render_kw={
            'placeholder': "请输入用户名"
        }

    )

    pwd = PasswordField(
        label="密码",
        validators=[
            DataRequired("请输入密码!")
        ],
        render_kw={
            'placeholder': "请输入密码"
        }

    )
    verify_code=StringField(
        label="验证码",
        validators=[
            DataRequired()
        ]

    )
    submit = SubmitField(
        label="登录",
        render_kw={
            "value": "登录"
        }
    )


class RegisterForm(FlaskForm):
    name = StringField(
        label='用户名',
        validators=[
            DataRequired("请输入用户名")
        ],
        render_kw={
            'placeholder': "请输入用户名"
        }

    )

    email = StringField(
        label="邮箱",
        validators=[
            DataRequired("请输入邮箱"),
            Email("邮箱格式不正确")  ##邮箱格式不正确时
        ]
    )
    phone = StringField(
        label="电话号码",
        validators=[
            DataRequired("请输入电话"),
            Regexp('1\d{10}')  ##正则
        ]
    )
    pwd = PasswordField(
        label="密码",
        validators=[
            DataRequired("请输入密码!")
        ],
        render_kw={
            'placeholder': "请输入密码"
        }

    )
    repwd = PasswordField(
        label="再次输入密码",
        validators=[
            DataRequired("请再次输入密码!"),
            EqualTo('pwd', message="两次密码不一致")  # 比较字符串的不同,并给出messages
        ],
        render_kw={
            'placeholder': "请再次输入密码"
        }


    )

    submit = SubmitField(
        label="注册",
        render_kw={
            "value": "注册"
        }
    )

    def validate_name(self, field):
        name = field.data
        user = User.query.filter_by(name=name).count()
        if user == 1:
            raise ValidationError("昵称已存在")

    def validate_email(self, field):
        email = field.data
        user = User.query.filter_by(email=email).count()

        if user == 1:
            raise ValidationError("邮箱已存在")

    def validate_phone(self, field):
        phone = field.data
        user = User.query.filter_by(phone=phone).count()
        if user == 1:
            raise ValidationError("电话号码已存在")


class UploadForm(FlaskForm):
    file = FileField(
        label="简历",
        validators=[
            FileRequired(),
            FileAllowed(['pdf', 'txt'], '只接受.pdf和.txt格式的简历')

        ]
    )
    submit = SubmitField(
        render_kw={
            "value": "上传",

        }
    )
字段类型    说 明
 StringField    文本字段
 TextAreaField  多行文本字段
 PasswordField  密码文本字段
 HiddenField    隐藏文本字段
 DateField  文本字段,值为datetime.date格式
 DateTimeField  文本字段,值为datetime.datetime格式
 IntegerField   文本字段,值为整数
 DecimalField   文本字段,值为decimal.Decimal
 FloatFiled 文本字段,值为浮点数
 BooleanField   复选框,值为TrueFalse
 RadioField 一组单选框
 SelectField    下拉列表
 SelectMultipleField    下拉列表,可选择多个值
 FileField  文件上传字段
 SubmitField    表单提交按钮
 FormField  把表单作为字段嵌入另一表单
  FieldList 一组指定类型的字段

WTForms验证函数:
验证函数    说 明
Email   验证电子邮件地址
EqualTo 比较两个字段的值,常用于要求输入两次密码确认的情况
IPAddress   验证IPv4网络地址
Length  验证输入字符串的长度
NumberRange 验证输入的值在数字范围内
Optional    无输入值时跳过其他验证函数
Required    确保字段中有数据
Regexp  使用正则表达式验证输入值
URL 验证URL
AngOf   确保输入值在可选值列表中
NoneOf  确保输入值之不在可选值列表中
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值