flask_wtf是flask框架的表单验证模块,可以很方便生成表单,也可以当做json数据交互的验证工具,支持热插拔。
安装
pip install Flask-WTF
Flask-WTF其实是对wtforms组件的封装,使其支持对flask框架的热插拔。
简单使用
# app.py from flask import Flask, current_app, request, render_template from forms import MyForm app = Flask(__name__,template_folder='static/html') @app.route('/',methods=['GET','POST']) def login(): form = MyForm() if form.validate_on_submit(): return 'OK' return render_template('forms/index.html', form=form) if __name__ == '__main__': app.<i style="color:transparent">本文来源gaodai$ma#com搞$$代**码网$</i>run(host='127.0.0.1', port=80, debug=True) # forms.py from flask_wtf import FlaskForm from wtforms import StringField from wtforms.validators import DataRequired class MyForm(FlaskForm): name = StringField('name', validators=[DataRequired()]) # forms/index.html <form method="POST" action="/"> {{ form.csrf_token }} {{ form.name.label }} {{ form.name(size=20) }} <input type="submit" value="Go"> </form>
flask_wtf定义字段
flask_wtf完全使用wtforms组件的字段模型,wtforms对字段的定义在fields模块;又分为core和simple,core模块定义了普通使用的字段,simple在core模块的基础上扩展了一些字段,这些字段会自动进行字段级别的校验。
字段类型
# core.py __all__ = ( 'BooleanField', 'DecimalField', 'DateField', 'DateTimeField', 'FieldList', 'FloatField', 'FormField', 'IntegerField', 'RadioField', 'SelectField', 'SelectMultipleField', 'StringField', )
常用字段说明:
- BooleanField:布尔类型,如Flask,True
- StringField:字符串类型
- DecimalField:小数点文本字段,如:‘1.23′
- DateField:日期字段,格式:’%Y-%m-%d’
- DateTimeField:日期字段,格式:’%Y-%m-%d %H:%M:%S’
- FieldList:统一字段类型组成列表,如:FieldList(StringField(‘Name’, [validators.required()]))
- FloatField:浮点数类型
- IntegerField:整形
- SelectMultipleField:多选框
- RadioField:单选框
simple.py
- TextAreaField:文本域,可接受多行输入
- PasswordField:密码字段,输入的不会直接在浏览器明文显示
- FileField:上传文件,但不会处理验证文件,需要手动处理
- HiddenField:隐藏字段
- SubmitField:按钮
- TextField:字符串类型的别名,弃用
表单定义
# 参数: class UserAdminForm(FlaskForm): username = StringField(label='用户名', validators=[DataRequired(),Length(4,20)]) password_hash = PasswordField(label='密码',validators=[DataRequired(),Length(4,20)]) limit = SelectField(label='用户权限', choices=[('guest', '所有权限'), ('operation', '可读可写不可删除'), ('management', '可读不可写')], default='guest') # 权限 # 字段一般的参数 # label:字段的名字 # default:默认 # validators:字段的验证序列 # description:字段的描述 # choices:SelectField和他的子类有的字段,选择框,多选一
字段的验证序列
字段的参数validators可以指定提交表单的验证序列,按照从左到右的顺序,默认的可选验证在wtforms.validators模块,已经封装的验证方法有:
__all__ = ( 'DataRequired', 'data_required', 'Email', 'email', 'EqualTo', 'equal_to', 'IPAddress', 'ip_address', 'InputRequired', 'input_required', 'Length', 'length', 'NumberRange', 'number_range', 'Optional', 'optional', 'Required', 'required', 'Regexp', 'regexp', 'URL', 'url', 'AnyOf', 'any_of', 'NoneOf', 'none_of', 'MacAddress', 'mac_address', 'UUID' )