在使用 Flask 框架的过程中,会时常使用到 WTForm1 这个库。然而在使用中却发现,该库提供的 HTML 元素并不完整,基本只局限于表单所使用的内容。尤其是页面中常用的按钮
只有用于提交表单的 submit
功能,在其内部表示为 SubmitField
。
当然这样的设计与该库本身立足于页面表单功能是紧密相连的。对于表单来说,按钮的最大功能就是提交表单。然而,我们并不能排除在一个表单中存在多个按钮,用于提供不同功能的情况。所以,单纯的 SubmitField
所实现的提交按钮就显得非常局限。此时,我们就需要利用 WTForm 提供的自定义 Field
和 Widget
功能,自己编写代码,来实现自己想要的按钮功能。
我们知道,在页面中,要实现一个按钮,通常的方式有两个:
- 使用
<input type='button' />
来创建一个按钮 - 使用
<button type='button'>BUTTON</button>
来实现一个按钮
这两种方式各自的特点在此不进行阐述,总之,我们现在的目标就是要通过自定义的方式实现他们,且让 Jinja2 模板引擎能够正确的在页面渲染出按钮。
因为 WTForm 的官方文档并不完善,所以这里我们推荐直接通过阅读库的源代码的方式来学习自定义开发。
既然我们需要的是按钮,那么最直接的参考是 SubmitField
。
首先我们实现一个 SubmitField
,查看其对应的页面 HTML 代码如下:
<input id="submit"