Python 如何在窗体的_init__函数中绑定字段
在某些情况下,我需要在表单中动态添加字段。添加到示例表单中的字段_3原来是一个未绑定的字段。我试图在Python 如何在窗体的_init__函数中绑定字段,python,flask,wtforms,flask-wtforms,Python,Flask,Wtforms,Flask Wtforms,在某些情况下,我需要在表单中动态添加字段。添加到示例表单中的字段_3原来是一个未绑定的字段。我试图在\uuuu init\uuuu函数中将字段3绑定到表单中,但它不起作用 class Example_Form(Form): field_1 = TextAreaField() field_2 = TextAreaField() def __init__(self, type, **kwargs): super(Example_Form, self).__i
\uuuu init\uuuu
函数中将字段3绑定到表单中,但它不起作用
class Example_Form(Form):
field_1 = TextAreaField()
field_2 = TextAreaField()
def __init__(self, type, **kwargs):
super(Example_Form, self).__init__(**kwargs)
if type == 'type_1':
self.field_3 = TextAreaField()
如何将字段\u 3绑定到示例表单?使用
self.meta.bind\u field
创建绑定字段,并将其分配给实例和\u字段
field_3 = TextAreaField()
field_3.bind(self, 'field_3')
在大多数情况下,在创建表单实例时,使用子类并决定使用哪个类更为明确
self.field_3 = self._fields['field_3'] = self.meta.bind_field(
self, TextAreaField(),
{'name': 'field_3', 'prefix': self._prefix}
)
如果需要更具动态性,可以对表单进行子类化并为其分配字段。与实例不同,将字段指定给类可以直接工作
class F1(Form):
x = StringField()
class F2(F1):
y = StringField()
form = F1() if type == 1 else F2()
您还可以定义所有字段,然后在验证表单之前选择删除一些字段
class F3(F1):
pass
if type == 3:
F3.z = StringField()
form = F3()
使用self.meta.bind_字段
创建绑定字段,并将其分配给实例和_字段
dict
field_3 = TextAreaField()
field_3.bind(self, 'field_3')
在大多数情况下,在创建表单实例时,使用子类并决定使用哪个类更为明确
self.field_3 = self._fields['field_3'] = self.meta.bind_field(
self, TextAreaField(),
{'name': 'field_3', 'prefix': self._prefix}
)
如果需要更具动态性,可以对表单进行子类化并为其分配字段。与实例不同,将字段指定给类可以直接工作
class F1(Form):
x = StringField()
class F2(F1):
y = StringField()
form = F1() if type == 1 else F2()
您还可以定义所有字段,然后在验证表单之前选择删除一些字段
class F3(F1):
pass
if type == 3:
F3.z = StringField()
form = F3()
对于此特定情况,您是否希望使用Example\u Form
的子类?字段是类声明,而不是实例属性,对于描述符协议和WTForms
可能使用的其他元编程技术来说,差异很重要。对于这种特定情况,您是否需要Example\u Form
的子类?字段是类声明,而不是实例属性,这一区别对于描述符协议和其他元编程技术很重要WTForms
可能使用。