Flask——WTF表单

Web表单

	Web表单是Web应用程序的基本功能。
	它是HTML页面中负责数据采集的部件,表单有三个部分组成,表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。
	在Flask中,为了处理Web表单,我们可以使用Flask-WTF扩展 ,它封装了WTForms,并且它具有验证表单数据的功能。
	
	from flask import Flask,render_template
	# 导入WTF提动的表单类
	from flask_wtf import FlaskForm
	# 导入WTF扩展提供的表单字段
	from wtforms import StringField,PasswordField,SubmitField
	# 导入WTF扩展提供的验证函数
	from wtforms.validators import DataRequired,EqualTo
	
	app = Flask(__name__)
	
	# 需求:实现简单的页面注册,并获取用户输入的注册信息
	# 1.自定义表单类,继承WTF扩展提供的表单类
	# 实例化表单类对象,传入模板
	# 3.在模板中使用wtf提供的表单
	# 设置密钥
	app.config['SECRET_KEY'] = 'bswQyqXfuokWTElaAQnU6cGPIaTwPwNPiES5bAU/dnmWrqAl6WFeqOVRI+ca'
	
	class Form(FlaskForm):
	    user = StringField(validators=[DataRequired()])
	    pswd = PasswordField(validators=[DataRequired(),EqualTo('pswd2')])
	    pswd2 = PasswordField(validators=[DataRequired()])
	    subm = StringField('注册')
	
	
	@app.route('/')
	def index():
	    # 实例化表单对象
	    form = Form
	    # 注意,要保证验证器生效,需要调用函数来实现
	    # 如果参数满足验证器的要求,才获取参数。如果不调用这个参数,会导致在from表单中中输入的两次密码不一致也会接受数据。
	    # 不仅会验证请求参数,还会验证请求的表单域中是否由csrf_token,因此需要保证在模块文件中设置一个必需参数{{form.csrf_token}}
	    if form.validate_on_submit():
	    # 获取参数.request.form.get('user')
	        wtf_user = form.user.data
	        print(wtf_user)
	    return render_template('wtf.html',form = form)
	
	
	if __name__ == '__main__':
	    app.run(debug=True)

·

WTForms支持的HTML标准字段

字段对象 说明

StringField	文本字段
TextAreaField	多行文本字段
PasswordField	密码文本字段
HiddenField	隐藏文件字段
DateField	文本字段,值为 datetime.date 文本格式
DateTimeField	文本字段,值为 datetime.datetime 文本格式
IntegerField	文本字段,值为整数
DecimalField	文本字段,值为decimal.Decimal
FloatField	文本字段,值为浮点数
BooleanField	复选框,值为True 和 False
RadioField	一组单选框
SelectField	下拉列表
SelectMutipleField	下拉列表,可选择多个值
FileField	文件上传字段
SubmitField	表单提交按钮
FormField	把表单作为字段嵌入另一个表单
FieldList	一组指定类型的字段
WTForms常用验证函数

验证函数 说明

DataRequired	确保字段中有数据
EqualTo	比较两个字段的值,常用于比较两次密码输入
Length	验证输入的字符串长度
NumberRange	验证输入的值在数字范围内
URL	验证URL
AnyOf	验证输入值在可选列表中
NoneOf	验证输入值不在可选列表中

注意:使用 Flask-WTF 需要配置参数 SECRET_KEY。
CSRF_ENABLED是为了CSRF(跨站请求伪造)保护。 SECRET_KEY用来生成加密令牌,当CSRF激活的时候,该设置会根据设置的密匙生成加密令牌。

猜你喜欢

转载自blog.csdn.net/weixin_43617255/article/details/83903383
今日推荐