1 from flask_wtf import FlaskForm
版本的更新连导入名称都不一样了,
最近在开flask的框架..初学.随笔记录一下.
flask-wtf 给我的理解很神奇..
它是一个用作验证的插件,也是一个像html 一样的标签,使用方法看上去很绕.实际上蛮好理解
forms.py
1 # -*-coding:utf-8-*- 2 from flask_wtf import FlaskForm 3 from wtforms import StringField,BooleanField 4 from wtforms.validators import DataRequired 5 6 class LoginForm(FlaskForm): 7 #DataRequired 验证器只是简单地检查相应域提交的数据是否是空 8 #StringField,BooleanField是我们需要的字段 9 openid = StringField('openid',validators=[DataRequired()]) 10 remember_me = BooleanField('remenmber_me',default=False)
在class 类里面,
StringField
可以直接通过 {{form.openid}} 就能显示在 html中 通过静态页面可以看到 <input text='' id="openid" name='openid' >
同理 BooleanField ,在html 中使用 {{form.remember_me}} 静态页面也将放回 <input id="remember_me" name="remember_me" type="checkbox" value="y"> 单选项 默认为不勾选
Flask wtf更好的扩展性更强了,加入了 验证 .
可能说的不全面.
但是flask wtf 是作为框架使用,肯定是离不开 mvc 的套路.
如果直接这样写,是一定不能被正确使用的.
需要在flask 框架 视图 views 中.找到相应 路由 在方法下..实例化这个验证
1 from .forms import LoginForm 2 3 @app.route('/login',methods=['POST','GET']) 4 def login(): 5 form = LoginForm() 6 if form.validate_on_submit(): 7 flash('Login requested for OpenID='+ form.openid.data +",remember_me="+str(form.remember_me.data)) 8 return redirect('/index') 9 return render_template('login.html',title = '登陆',form =form)
LoginForm 类,从这个类实例化一个对象,接着把它传入到模板中。这就是我们渲染表单所有要做的。
html中的{{form.标签}} 是通过 POST 请求 提交给 视图路由/login
然后判断是否提交验证.
直接访问/login 会直接 打开 login.html
flask-wtf from表单 -> 视图view.py ->html
浙公网安备 33010602011771号