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.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:字符串类型的别名,弃用