目录
一、介绍
WTForms 是一个 Python 表单验证、渲染开发包;使用 WTForms, 你能生成属于你的表单域的 HTML 代码, 此外我们允许你在模板中定 制它. 这允许你维持独立的代码和展现, 并把这些凌乱的参数保留在 Python 代码之外. 因 为我们争取松耦合, 同样的, 你应该可以在你喜欢的任意的模板引擎中这么做.
1-1 安装
二、快速使用
2-1 登陆校验的使用举例
from flask import Flask, render_template, request, redirect from wtforms import Form from wtforms.fields import simple from wtforms import validators from wtforms import widgets app = Flask(__name__, template_folder='templates') app.debug = True class LoginForm(Form): # 用户名字段校验(内部包含正则表达式) name = simple.StringField( label='用户名', # validators内存放所有校验规则 validators=[ validators.DataRequired(message='用户名不能为空.'), validators.Length(min=6, max=18, message='用户名长度必须大于%(min)d且小于%(max)d') ], widget=widgets.TextInput(), # 页面上显示的组件类型 # render_kw给widget渲染成指定样式 render_kw={'class': 'form-control'} ) # 密码字段校验(内部包含正则表达式) pwd = simple.PasswordField( label='密码', validators=[ validators.DataRequired(message='密码不能为空.'), validators.Length(min=8, message='用户名长度必须大于%(min)d'), validators.Regexp(regex="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}", message='密码至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符') ], widget=widgets.PasswordInput(), render_kw={'class': 'form-control'} ) @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'GET': form = LoginForm() return render_template('login.html', form=form) else: # 将post提交的数据给予form对象 form = LoginForm(formdata=request.form) # form.validate() = True 表示数据通过校验 if form.validate(): print('用户提交数据通过格式验证,提交的值为:', form.data) else: # 打印所有错误信息; form.name.errors - 单个错误信息 print(form.errors) return render_template('login.html', form=form) if __name__ == '__main__': app.run()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>登录</h1> <form method="post"> <p>{ {form.name.label}} { {form.name}} { {form.name.errors[0] }}</p>