Flask-WTF的使用

WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证。当网站中需要用到表单时,WTForms变得很有效。应该把表单定义为类,作为单独的一个模块。

烧瓶-WTF — 烧瓶-WTF 文档 (1.0.x) (flask-wtf.readthedocs.io)icon-default.png?t=M85Bhttps://flask-wtf.readthedocs.io/en/1.0.x/

安装

pip install wtforms

创建表单

通常是创建一个Form的子类,表单的中的字段作为类的属性,如:

from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired

class MyForm(FlaskForm):
    name = StringField('name', validators=[DataRequired()])

Form的主要属性:

  • data:字典类型,包括每一个字段的数据。如果需要频繁访问字段值,可以使用form.<field>.data进行访问
  • errors:字典类型,包括每一个字段的错误信息。

 Form的主要字段类型:

  • BooleanField
    •  复选框,值为True和False
  • DateField
    •  文本字段,值为datetime.date格式
    • 如:YYYY-MM-DD

DateTimeField 

  •  文本字段,值为datetime.datetime格式
    •  如:YYYY-MM-DD HH:MM:SS
  • DecimalField
    •  文本字段,值为decimal.Decimal
  • FileField
    •  文件上传字段
  • FloatField
    •  文本字段,值为浮点数
  • FormField
    •  把表单作为字段嵌入另一个表单
  • HiddenField
    •  隐藏文本字段
  • IntegerField
    •  文本字段,值为整数
  • PasswordField
    •  密码文本字段
  • RadioField
    •  一组单选框
  • SelectField
    •  下拉列表
    • choices参数表示下列的内容,需要是一个列表,列表的每一项是一个元组,如:[(0,'男'),(1,'女')]。
    • coerce参数表示实际选择的内容格式。一般为int
  • SelectMultipleField
    •  下拉列表,可选择多个值
    • 参数与SelectField相同
  • StringField
    •  文本字段
  • SubmitField
    •  表单提交按钮
  • TextAreaField
    •  多行文本字段
  • TextField.
    •  文本域字段
  •  RecaptchaField
    •  验证码字段

以上字段中都有两个参数,第一个为label,表示这个表单的标签,第二个是validators,是一个列表,表示验证器。

在视图处理程序中验证请求

@app.route('/submit', methods=['GET', 'POST'])
def submit():
    form = MyForm()
    if form.validate_on_submit():
        return redirect('/success')
    return render_template('submit.html', form=form)

 当form.validate_on_submit()返回True时,则表示验证失败。

flask wtforms 常用验证器: 

  • Email: 验证上传的数据是否为邮箱
  • EqualTo:验证上传的数据是否和另外一个字段相等,常用的就是密码和确认密码两个字段是否相等。
  • InputRequired:原始数据的验证。如果不是特说情况,应该使用InutRequired。
  • Length: 长度限制,有min 和max两个值进行限制。
  • NumberRange:数字区间, 有min和max两个值限制, 荣国处在两个数字之间满足。
  • Regexp:自定义正则表达式。
  • URL:必须是URL形式。
  • UUID:验证UUID
from wtforms import Form, StringField, IntegerField
from wtforms.validators import (Email, EqualTo, InputRequired, Length, NumberRange, Regexp, URL, UUID,ValidationError)

class LoginForm(Form):
    email = StringField(validators=[Email()])
    username = StringField(validators=[InputRequired, Length(min=3, max=15)])
    age = IntegerField(validators=[NumberRange(1,150)])
    phont = StringField(validators=[Regexp(r'1[3,5,6,7,8]\d{9}')])
    homeurl = StringField(validators=[URL()])
    uuid = StringField(validators=[UUID()])
  	captcha = StringField(validators=[Length(6, 6)])

自定义验证器

from flask_wtf import FlaskForm
from wtforms.validators import ValidationError
from wtforms import StringField

class LoginForm(FlaskForm):
    name = StringField()

    # 自定义验证器,validate_(写需要验证的字段名captcha)
    def validate_name(self, field):
        # 在ValidationError中填写错误提示信息, 错误信息可通过 form.errors 获取到
        if not field.data:
            raise ValidationError('请输入名字')

如果验证失败,抛出ValidationError错误即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHYZBC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值