Flask笔记(5):表单
source link: https://greyli.com/flask-note-5-forms/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Flask笔记(5):表单
Flask有众多的扩展来简化集成各种常用的库和框架,比如Flask-Bootstrap集成了Bootstrap,Flask-WTF集成了WTForms。这篇要介绍的就是Flask-WTF。
安装和配置
安装很简单,使用pip:
pip install flask-wtf
Flask-WTF默认支持CSRF(跨站请求伪造)保护,只需要在程序中设置一个密钥。Flask-WTF使用这个密钥生成加密令牌,再用令牌验证表单中数据的真伪。(关于Flask项目的配置和初始化,后续文章会谈到)你可以使用app.config字典来存储配置变量:
或是从系统环境变量中获取
很多重要的信息,比如邮箱账户和密码都不能直接下载程序里,而要设置系统环境变量,设置方法如下(Windows CMD):
后面的字符串不需要用任何符号括起来。
每个表单都用一个继承自Form的类表示,每个字段都用一个对象表示,每个对象可以附加多个验证函数。常见的验证函数有Required()
,Length()
,Email()
等。
一个登录表单示例:
表单有很多种渲染方式。
下面以一个撰写文章的表单为例。
默认的渲染方式
这种方式渲染出来的表单没有样式,而且很繁琐(当然,你也可以使用for循环来遍历字段)。
使用Flask-Bootstrap渲染
Flask-Bootstrap提供了一个模板(wtf.html),可以让你快速生成样式良好的表单。
假如你不需要调整Boostrap的默认表单样式,只想要快速生成表单,那么Flask-Bootstrap还提供了一个强大的函数,只需要一行就可以快速生成表单):
控制表单的样式
对于样式,可以通过给表单增加id或class来实现。比如这样:
也可以在表单类里传入参数,像这样:
在表单字段里传入一个render_kw字典,将HTML的参数和值以键值对的形式写入字典。WTForms2.1及以上版本适用。
这里需要注意的是,Flask-Bootstrap会给表单添加class来控制样式,这时你再通过render_kw传入已经被定义过的参数会失败。所以,如果要使用render_kw传入class,得确保表单字段使用默认的渲染方式。
提交表单视图
这是一个添加文章的视图。
常见问题索引
- 一个页面里有多个表单
- 文件及多文件上传
- 文本编辑器支持
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK