Flask处理Web表单的详细分析
这篇文章将为大家详细讲解有关Flask处理Web表单的详细分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
web表单是web应用程序的基本功能。
它是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。
在Flask中,为了处理web表单,我们一般使用Flask-WTF扩展,它封装了WTForms,并且它有验证表单数据的功能。
WTForms支持的HTML标准字段使用 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表单的详细分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。