flask插件系列之Flask-WTF表单

 

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:字符串类型的别名,弃用
  • 表单定义
# 参数: 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'

                    
                
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信