在 Flask-WTF 中,表单是表示成对象,是FlaskForm类的子类。一个表单子类简单地把表单的域定义成类的变量。
从上述代码可看出,我们定义了一个LoginForm,且继承了FlaskForm类,它直接使用StringField等对象作为自己的成员变量。
有了这个LoginForm之后,我们需要在用户打开login页面时实例化这个类,并把这个类中包含的username等元素显示在网页上。因此,实例化就应该在view.py中的route所对应的函数中。
参考上述代码,实例化完成之后,开始渲染login.html网页,并把form对象作为参数传入该网页。接下来就看login.html模板中如何处理form对象了。
处理过程非常简单,就是把username等对象的label及其对应的实体显示在网页上即可。flask_wtf已经把必要的信息都封装在相应的对象里了,因此模板页面就十分简洁。
最后怎么接收表单post的数据呢?也很简单。form.validate_on_submit函数在数据验证通过并且用户按了submit之后返回true,否则返回false。这个函数也是flask_wtf为web应用量身定做的。
假如validate_on_submit返回true,那么说明用户输入有效且已经完成,我们就可以拿着用户名和密码去数据库中比对了。由于数据库部分还没有实现,这里直接重定向到index页面,并通过flash函数显示获取到的post参数。
大体上,一个login的表单处理就完成了,使用flask_wtf之后明显代码简洁了,逻辑清晰了。
领取专属 10元无门槛券
私享最新 技术干货