以多种形式重用 wtforms 字段
Reuse wtforms field in multiple forms
我有一堆具有相似字段的表单。为了简化我的代码,我想在表单之外定义字段,然后根据需要将字段添加到表单中,如下所示:
name = wt.StringField("name")
age = wt.StringField("age")
class Form1(FlaskForm):
name=name
class Form2(FlaskForm):
age=age
class Form3(FlaskForm):
name=name
age=age
这种模式似乎行得通,但我以前从未见过有人这样做过,所以我想确保在极端情况下不会出现这种情况。如果是这样,有更好的方法吗?
在我看来,FormField 就是您要找的东西。
class nameForm(Form):
name = wt.StringField("name")
class ageForm(Form):
age = wt.StringField("age")
class Form1(FlaskForm):
name = FormField(nameForm)
class Form2(FlaskForm):
age = FormField(ageForm)
class Form3(FlaskForm):
name = FormField(nameForm)
age = FormField(ageForm)
这是一些相关的文档 -> https://wtforms.readthedocs.io/en/2.3.x/fields/
在该文档中搜索 Field Enclosures 部分
虽然我问题中的模式有效,但我对使用它感到紧张,因为它似乎不是推荐的做事方式。这是满足我需求的更安全的方法:
def name_field(): return wt.StringField("name")
def age_field(): return wt.StringField("age")
class Form1(FlaskForm):
name=name_field()
class Form2(FlaskForm):
age=age_field()
class Form3(FlaskForm):
name=name_field()
age=age_field()
我有一堆具有相似字段的表单。为了简化我的代码,我想在表单之外定义字段,然后根据需要将字段添加到表单中,如下所示:
name = wt.StringField("name")
age = wt.StringField("age")
class Form1(FlaskForm):
name=name
class Form2(FlaskForm):
age=age
class Form3(FlaskForm):
name=name
age=age
这种模式似乎行得通,但我以前从未见过有人这样做过,所以我想确保在极端情况下不会出现这种情况。如果是这样,有更好的方法吗?
在我看来,FormField 就是您要找的东西。
class nameForm(Form):
name = wt.StringField("name")
class ageForm(Form):
age = wt.StringField("age")
class Form1(FlaskForm):
name = FormField(nameForm)
class Form2(FlaskForm):
age = FormField(ageForm)
class Form3(FlaskForm):
name = FormField(nameForm)
age = FormField(ageForm)
这是一些相关的文档 -> https://wtforms.readthedocs.io/en/2.3.x/fields/
在该文档中搜索 Field Enclosures 部分
虽然我问题中的模式有效,但我对使用它感到紧张,因为它似乎不是推荐的做事方式。这是满足我需求的更安全的方法:
def name_field(): return wt.StringField("name")
def age_field(): return wt.StringField("age")
class Form1(FlaskForm):
name=name_field()
class Form2(FlaskForm):
age=age_field()
class Form3(FlaskForm):
name=name_field()
age=age_field()