目录
WTForms验证
Flask-WTF
Flask-WTF是简化了WTForms操作的一个第三方库。WTForms表单的两个主要功能是验证用户提交数据的合法性以及渲染模板。当然还包括一些其他的功能:CSRF保护,文件上传等。
安装方式
安装Flask-WTF会自动安装WTForms
pip install flask-wtf
先来创建模板, 用于测试下面各项验证
在这里插入代码片
表单验证
在注册账号时, 会经常对用户名和密码做些长度的验证以及再次输入密码等验证.
然后建立一个py文件, 用于表单验证并将验证结果返回到视图文件中.
表单验证form.py
from wtforms import Form, StringField, validators
from wtforms.validators import Length, EqualTo
# 表单验证
class RegistForm(Form):
username = StringField(validators=[Length(min=3, max=10, message="用户名长度不正确")])
password = StringField(validators=[Length(min=3, max=10, message="密码长度不正确")])
password_repate = StringField(validators=[EqualTo("password", message="两次密码不一致")])
- 做验证的类需要继承Form
- Length: 验证长度
- EqualTo: 验证指定字段的值是否相同
- message: 自定义输出错误信息
在视图文件中, 只需要导入表单验证文件,并对返回结果做判断即可
from flask import Flask, request,render_template
from forms import RegistForm
app = Flask(__name__)
@app.route("/")
def index():
return "首页"
@app.route("/regist/", methods=["GET", "POST"])
def regist():
if request.method == "GET":
return render_template("regist.html")
else:
# 将接收到的post数据传入表单验证中
form = RegistForm(request.form)
if form.validate(): # 判断是否验证通过
return "成功"
else:
print(form.errors) # 输出错误原因
return "失败"
if __name__ == '__main__':
app.run(debug=True)
- 后续不管做什么验证, 视图文件都只需要根据验证结果判断并返回相应的内容即可, 不需要在视图文件中写太多验证的代码.
验证邮箱格式
验证邮箱格式需要用到Email模块
另外,在使用前还需要安装email_validator, 它需要依赖这个模块才能使用
...
from wtforms.validators import Email # 验证邮箱格式
...
...
class LoginForm(Form):
email = StringField(validators=[Email(message="邮箱格式不正确")])
限制数字为整数以及验证范围内的数字
IntegerField: 限制传入的字段都必须为整数
NumberRange: 判断一个数字是否在指定的范围内.
...