在上一篇,我们已经了解到 WTForm 自带的元素的局限性,所以通过自定义的方式实现了一个 <input type='button' />
形式的按钮元素。在本篇中,我们就试着实现 <button type='button'>BUTTON</button>
形式的按钮。
之前的一篇里,我们所实现的按钮元素,其实与 WTForm 所提供的 SubmitField
没有本质上的区别,只是其 type
改变了,来源就是 WTForm 的源代码(simple.py
文件)。而我们观察 WTForm 源代码的其他部分(core.py
文件)发现,不光有一种实现形式,还有一种如下形式的元素类定义:
class Label(object):
"""
An HTML form label.
"""
def __init__(self, field_id, text):
self.field_id = field_id
self.text = text
# ... 中略 ...
def __call__(self, text=None, **kwargs):
if 'for_' in kwargs:
kwargs['for'] = kwargs.pop('for_')
else:
kwargs.setdefault('for', self.field_id)
a