这篇文章将为大家详细讲解有关Flask处理Web表单的详细分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

web表单是web应用程序的基本功能。

它是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。

在Flask中,为了处理web表单,我们一般使用Flask-WTF扩展,它封装了WTForms,并且它有验证表单数据的功能。

WTForms支持的HTML标准字段字段对象说明字段对象说明StringField文本字段TextAreaField多行文本字段PasswordField密码文本字段HiddenField隐藏文件字段DateField文本字段,值为 datetime.date 文本格式DateTimeField文本字段,值为 datetime.datetime 文本格式IntegerField文本字段,值为整数DecimalField文本字段,值为decimal.DecimalFloatField文本字段,值为浮点数BooleanField复选框,值为 True 和 FalseRadioField一组复选框SelectField下拉列表SelectMutipleField下拉列表可选择多个值FileField文件上传字段SubmitField表单提交按钮FormField把表单作为字段嵌入另一个表单FieldList一组指定类型的字段WTForms常用验证函数验证函数说明DateRequired确保字段中有数据EqualTo比较两个字段的值,常用于比较两次密码的输入Length验证输入的字符串长度NumberRange验证输入的值在数字范围内URL验证URLAnyOf验证输入值在可选列表中NoneOf验证输入值不在可选列表中

使用 Flask-WTF 需要配置参数 SECRET_KEY
CSRF_ENABLED是为了CSRF(跨站请求伪造)保护。 SECRET_KEY用来生成加密令牌,当CSRF激活的时候,该设置会根据设置的密匙生成加密令牌。在HTML页面中直接写form表单:

<formmethod='post'><inputtype="text"name="username"placeholder='Username'><inputtype="password"name="password"placeholder='password'><inputtype="submit"></form>12345

视图函数中获取表单数据:

fromflaskimportFlask,render_template,request@app.route('/login',methods=['GET','POST'])deflogin():ifrequest.method=='POST':username=request.form['username']password=request.form['password']printusername,passwordreturnrender_template('login.html',method=request.method)123456789使用 Flask-WTF 实现表单配置参数

app.config['SECRET_KEY']='SECRET_KEY'1模板页面

<formmethod="post">#设置csrf_token{{form.csrf_token()}}{{form.us.label}}<p>{{form.us}}</p>{{form.ps.label}}<p>{{form.ps}}</p>{{form.ps2.label}}<p>{{form.ps2}}</p><p>{{form.submit()}}</p>{%forxinget_flashed_messages()%}{{x}}{%endfor%}</form>1234567891011121314视图函数

#coding=utf-8fromflaskimportFlask,render_template,\redirect,url_for,session,request,flash#导入wtf扩展的表单类fromflask_wtfimportFlaskForm#导入自定义表单需要的字段fromwtformsimportSubmitField,StringField,PasswordField#导入wtf扩展提供的表单验证器fromwtforms.validatorsimportDataRequired,EqualToapp=Flask(__name__)app.config['SECRET_KEY']='1'#自定义表单类,文本字段、密码字段、提交按钮classLogin(FlaskForm):us=StringField(label=u'用户名',validators=[DataRequired()])ps=PasswordField(label=u'密码',validators=[DataRequired(),EqualTo('ps2','err')])ps2=PasswordField(label=u'确认密码',validators=[DataRequired()])submit=SubmitField(u'提交')@app.route('/login')deflogin():returnrender_template('login.html')#定义根路由视图函数,生成表单对象,获取表单数据,进行表单数据验证@app.route('/',methods=['GET','POST'])defindex():form=Login()ifform.validate_on_submit():name=form.us.datapswd=form.ps.datapswd2=form.ps2.dataprintname,pswd,pswd2returnredirect(url_for('login'))else:ifrequest.method=='POST':flash(u'信息有误,请重新输入!')printform.validate_on_submit()returnrender_template('index.html',form=form)if__name__=='__main__':app.run(debug=True)

关于Flask处理Web表单的详细分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。