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

 

posted on 2017-03-19 13:02  SxMask  阅读(1103)  评论(0)    收藏  举报