我正在尝试创建一个具有许多不同形式的网站。表单几乎是相同的,只是每个表单都有一些用户必须输入的其他变量,即它们都具有名称,描述和文件字段,但是每个表单都有一些不同的额外字段。我想知道是否有一种方法可以从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')
答案 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', [..])