flask基础之WTForm表单
表单(Form),常见的web功能。
直接通过请求上下文获取客户端数据进行解析,代码较繁杂,用WTForm可以简化处理,WTForm组成:
1.Form类
所有开发者自定义的表单需要继承自Form类或其子类
Form类最主要的功能是通过其所包含的Filed类提供对表单内数据的快捷访问方式。
2.Filed
即字段,WTForm定义了若干个Field类型,每个Filed类型对应一种HTML imput标签控件
比如 SubmitFiled 用于显示和获取<input type="submit">标签数据
3.Validator
验证器。用于验证用户在客户端输入的数据,当不符合时提示。
实践:
一、定义表单
from flask.ext.wtf import From
from wtforms import HiddenField ,DateTimeField,StringField,TexAreaField,BooleanField,FileField
class testForm():
id = HiddenField ('xxx')
date=DateTimeField ('xxx')
title =StringField('xxx')
content=TexAreaField('xxx')
valid=BooleanField('xxx')
source=StringField('xxx')
author=StringField('xxx')
image=FileField('xxx')
如果有公告的表单属性,可以提炼一个基类表单
二、显示表单:有了表单,如何显示
需要编辑"视图响应、路由映射""模板"2个文件
a.视图响应、路由映射,在Flask路由映射函数中实例化表单类,并且作为参数传递给render_template
@app.route('/XXX/view_test',methods=['GET','POST'])
def view_test():
form=TestForm(request.form)
return render_template('xx.html',form=form)
b.模板文件
主要是将WTForm表单字段嵌入需要显示的位置
...
<form action='' method='' name='' enctype='multipart/form-data'>
{{form.hidden_tag()}}
...
<div>
{{render_field(form.title,size=10)}}
</div>
...
</form>
...
三、获取表单数据
当用户在浏览器中填写表单数据并submit后,在服务器端重新实例化一个WTForm的对象可以直接获取用户在客户端输入的内容。
@app.route(...)
def view_test():
form=testForm(request.form)
if request.method=“POST” and form.validate():
if form.id.data:
test=orm.test.query.get(int(form.id.data)) #通过字段的data获取数据
......
orm.db.session.commit()
else:
test=orm.test(form.dt.data,...)
orm.db.session.add(test)
orm.db.session.commit()
form.id.data=test.id
posted on 2018-08-15 23:46 释放自我-建立真我-追求无我 阅读(705) 评论(0) 编辑 收藏 举报