在多个表单中重用wtforms字段

qzwqbdag  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(301)

我有一堆有相似字段的表单。为了简化代码,我想在表单外部定义字段,然后根据需要将字段添加到表单中,如下所示:

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

这种模式似乎工作,但我从来没有见过任何人这样做之前,所以我想确保没有边缘的情况下,这将打破。如果是这样,有没有更好的方法?

oyxsuwqo

oyxsuwqo1#

在我看来,福尔菲尔德就是你要找的。

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/
在本文档中搜索字段附件部分

3gtaxfhh

3gtaxfhh2#

虽然我的问题中的模式是可行的,但我对使用它感到紧张,因为它似乎不是一种推荐的做事方式。这是一种更安全的方法,可以满足我的需求:

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()

相关问题