欢迎访问宙启技术站
智能推送

wtforms.validators模块:表单验证器介绍

发布时间:2023-12-19 03:19:49

wtforms.validators是wtforms库中用于表单验证的模块。它包含了各种验证器,以帮助开发者对用户提交的数据进行验证,确保数据的准确性和完整性。

wtforms.validators模块中常用的验证器包括:

1. DataRequired: 检查字段是否为空。如果字段为空,则验证失败。

from wtforms import Form, StringField
from wtforms.validators import DataRequired

class MyForm(Form):
    username = StringField('Username', validators=[DataRequired()])

2. Email: 检查字段是否符合Email格式。如果字段不符合Email格式,则验证失败。

from wtforms import Form, StringField
from wtforms.validators import Email

class MyForm(Form):
    email = StringField('Email', validators=[Email()])

3. Length: 检查字段的长度是否在指定范围内。

from wtforms import Form, StringField
from wtforms.validators import Length

class MyForm(Form):
    username = StringField('Username', validators=[Length(min=4, max=16)])

4. NumberRange: 检查字段的值是否在指定范围内。

from wtforms import Form, IntegerField
from wtforms.validators import NumberRange

class MyForm(Form):
    age = IntegerField('Age', validators=[NumberRange(min=18, max=60)])

5. Regexp: 检查字段是否符合正则表达式的模式。

from wtforms import Form, StringField
from wtforms.validators import Regexp

class MyForm(Form):
    username = StringField('Username', validators=[Regexp('[a-zA-Z0-9]+')])

6. EqualTo: 检查两个字段的值是否相等。

from wtforms import Form, StringField
from wtforms.validators import EqualTo

class MyForm(Form):
    password = StringField('Password')
    confirm_password = StringField('Confirm Password', validators=[EqualTo('password')])

7. URL: 检查字段是否符合URL的格式。

from wtforms import Form, StringField
from wtforms.validators import URL

class MyForm(Form):
    website = StringField('Website', validators=[URL()])

以上仅是wtforms.validators模块中部分常用的验证器,还有其他的验证器可供使用。

使用验证器的步骤如下:

1. 导入wtforms库以及需要使用的字段和验证器。

2. 创建表单类,并在字段的validators参数中传入需要的验证器。

3. 在视图函数中实例化表单类,并通过form.validate()方法进行验证。

下面是一个完整的例子,展示了如何使用wtforms.validators进行表单验证:

from flask import Flask, render_template, request
from wtforms import Form, StringField
from wtforms.validators import Length, Email, DataRequired

app = Flask(__name__)

class MyForm(Form):
    email = StringField('Email', validators=[DataRequired(), Email()])
    password = StringField('Password', validators=[DataRequired(), Length(min=8)])

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm(request.form)

    if request.method == 'POST' and form.validate():
        # 表单验证通过,进行其他操作
        return 'Form validated successfully.'
    
    return render_template('index.html', form=form)

if __name__ == '__main__':
    app.run()

在上述例子中,创建了一个包含两个字段email和password的表单类MyForm,分别使用了DataRequired、Email和Length验证器。在视图函数中,通过form.validate()方法对表单数据进行验证,如果验证成功,则进行其他操作;否则返回包含表单的HTML页面。

以上就是wtforms.validators模块的介绍和使用示例。通过使用验证器,我们可以方便地对用户提交的表单数据进行验证,提高数据的准确性和完整性。