基于数组的烧瓶形式服务器端生成

时间:2020-06-27 18:41:22

标签: flask jinja2 flask-wtforms

我正在尝试创建一个具有许多不同形式的网站。表单几乎是相同的,只是每个表单都有一些用户必须输入的其他变量,即它们都具有名称,描述和文件字段,但是每个表单都有一些不同的额外字段。我想知道是否有一种方法可以从flask中的单个表单动态生成这些字段。例如

    from flask_wtf import FlaskForm
    from wtforms import StringField, FileField, TextField, SubmitField
    
    class dataEntryForm(FlaskForm, variables):
        name = StringField('Name', [DataRequired()])
        description = TextField('Description')


        for variable in variables:
            #generate a field with the name variable


        uploadFile = FileField('File', [DataRequired()])
        submit = SubmitField('Enter Job')

1 个答案:

答案 0 :(得分:0)

如果我了解您的担心,则可以为例如定义一个基类UserForm,该基类包含公共字段,然后使用Mixins扩展其属性(更多信息here)。根据您的逻辑,您可以根据需要定义许多Mixins

class UserForm(DateStampsFormMixin, SocialAccountsFormMixin, FlaskForm):
    name = StringField('Name', [DataRequired()])
    description = TextField('Description')
    uploadFile = FileField('File', [DataRequired()])
    submit = SubmitField('Enter Job')

并在2 Mixins下方:

class SocialAccountsFormMixin(FlaskForm):
    website_url = StringField('website url', [..])
    twitter_url = StringField('twitter url', [..])
    github_url = StringField('github url', [..])
    [..]

class DateStampsFormMixin(FlaskForm):
    created_at = DateTimeField('Created at', [..])
    updated_at = DateTimeField('Updated at', [..])