【Flask】WTForms基本使用
2020-02-03 03:26
197 查看
WTForms笔记:
这个库一般有两个作用。第一个就是做表单验证,把用户提交上来的数据进行验证是否合法。第二个就是做模版渲染。
做表单验证:
- 自定义一个表单类,继承自wtforms.Form类。
- 定义好需要验证的字段,字段的名字必须和模版中那些需要验证的input标签的name属性值保持一致。
- 在需要验证的字段上,需要指定好具体的数据类型。
- 在相关的字段上,指定验证器。
- 以后在视图中,就只需要使用这个表单类的对象,并且把需要验证的数据,也就是request.form传给这个表单类,以后调用form.validate()方法,如果返回True,那么代表用户输入的数据都是合法的,否则代表用户输入的数据是有问题的。如果验证失败了,那么可以通过form.errors来获取具体的错误信息。
示例代码如下:
# coding:utf-8 from flask import Flask, request, render_template from wtforms import Form, StringField, PasswordField, SubmitField from wtforms.validators import Length, DataRequired, EqualTo class RegistForm(Form): username = StringField(u'用户名', validators=[DataRequired(), Length(3, 10, message=u'请输入3-10位的用户名')]) password = PasswordField(u'密码', validators=[DataRequired(), Length(6, 10)]) password2 = PasswordField(u'重复密码', validators=[DataRequired(), EqualTo('password')]) submit = SubmitField(u'注册') app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' @app.route('/regist/', methods=['GET', 'POST']) def regist(): if request.method == "GET": return render_template('regist.html') else: form = RegistForm(request.form) if form.validate(): return u'注册成功' else: print form.errors return u'注册失败' if __name__ == '__main__': app.run(debug=True)
常用的验证器:
数据发送过来,经过表单验证,因此需要验证器来进行验证,以下对一些常用的内置验证器进行讲解:
- Email:验证上传的数据是否为邮箱。
- EqualTo:验证上传的数据是否和另外一个字段相等,常用的就是密码和确认密码两个字段是否相等。
- InputRequir:原始数据的需要验证。如果不是特殊情况,应该使用InputRequired。
- Length:长度限制,有min和max两个值进行限制。
- NumberRange:数字的区间,有min和max两个值限制,如果处在这两个数字之间则满足。
- Regexp:自定义正则表达式。
- URL:必须要是URL的形式。
- UUID:验证UUID。
代码示例如下:
class LoginForm(Form): email = StringField(validators=[Email(), ]) username = StringField(validators=[InputRequired()]) age = IntegerField(validators=[NumberRange(12, 100)]) phone = StringField(validators=[Regexp(r'1[34578]\d{9}')]) url = StringField(validators=[URL()]) uuid = StringField(validators=[UUID()])
自定义验证器:
如果想要对表单中的某个字段进行更细化的验证,那么可以针对这个字段进行单独的验证。步骤如下:
- 定义一个方法,方法的名字规则是:
validate_字段名(self,filed)
。 - 在方法中,使用
field.data
可以获取到这个字段的具体的值。 - 如果数据满足条件,那么可以什么都不做。如果验证失败,那么应该抛出一个
wtforms.validators.ValidationError
的异常,并且把验证失败的信息传到这个异常类中。
示例代码:
class LoginForm(Form): email = StringField(validators=[Email(), ]) username = StringField(validators=[InputRequired()]) age = IntegerField(validators=[NumberRange(12, 100)]) phone = StringField(validators=[Regexp(r'1[34578]\d{9}')]) url = StringField(validators=[URL()]) # uuid = StringField(validators=[UUID()]) captcha = StringField(validators=[Length(4, 4)]) # 自定义验证 def validate_captcha(self, field): if field.data != '1234': raise ValidationError(u'validate error!')
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- flask的基本使用
- flask中的wtforms使用
- flask 继承模版的基本使用1
- 使用flask 构建基本的 restful api
- Flask~~(SQLAlchemy的安装设置及数据库的基本使用操作----增~删~改~查)
- [译]Flask Framework Cookbook-第五章 使用WTForms处理表单
- 【flask】使用方案 Session1 基本操作
- flask_过滤器基本使用
- Flask-HelloWorld-01 安装和基本使用
- Python Flask路由的基本定义和PostMan的使用
- Flask--wtforms快速使用和表单验证(附示例)
- [Python]flask框架后端接口基本使用
- 在Python的Flask中使用WTForms表单框架的基础教程
- flask基本使用1
- flask的基本使用
- flask中的wtforms使用方法
- Flask-Principal的基本使用
- Flask框架基本使用
- python Flask的基本使用
- 在Python的Flask中使用WTForms表单框架的基础教程