版权声明: https://blog.csdn.net/JENREY/article/details/86605367
优势:内置了很多的验证对象,可以帮助我们快速的完成参数的校验,而不需要手动的编写函数来校验
1.首先安装WTForms插件
pip install wtforms
2.创建一个类用于验证,然后继承WTForms提供的基类form
文本类型的使用StringField这样的对象来定义这个
正整数使用IntegerField
WTForms常用验证函数:
- DataRequireed 确保字段中有数据
- EnqualTo 比较两个字段的值,常用于比较两次密码输入
- Length 验证输入的字段长度
- NumberRange 验证输入的值在数字范围内
- URL 验证URL
- AnyOf 验证输入值在可选列表中
- NoneOf 验证输入值不在可选列表中
from wtforms import Form, StringField, IntegerField
from wtforms.validators import Length, NumberRange
class test(Form):
p = StringField(validators=[Length(min=1, max=30)])
page = IntegerField(validators=[NumberRange(min=1, max=99)], default=1)
validators,接收的是一个数组,表示验证器可以是数组
Length,表示校验的是q的长度
form.validate()返回true才证明我们的验证通过了,所以业务逻辑要写带if为true下面。
我们要取到验证变量的值就需要通过来取:
注意,我们最好是通过form对象来取变量,而不要通过request.agrs[]来取,因为我们在上面定义了一下page为空的时候默认值是1,如果我们从request.args[]来取的就得不到page是1了。所以如果客户端没有传入page,那么我们取到的page默认值是为1的。
注意在flask的视图函数中如果没有任何的返回结果,flask会报错的。
可以看到上面出现错误后return的并不好,我们可以优化一下代码。下面我们来看form的属性
下面可以看到服务器给我们返回的错误提示。
我们也可以自定义错误提示:传入message
使用DataRequireed 确保字段中有数据
访问下面的URL
进入debug可以看到验证器是失效的
下面我们增加一下DataRequired()验证器即可
所以说如果这里我们对于传入的参数要是没有最大长度限制的话使用一个DataRequired就可以了。