我已经为我的Web项目开发了烧瓶WebForm。我需要在选择元素中的用户选择上删除或停用一个文件上传元素。
中的用户选择。class MyForm(FlaskForm):
email = StringField('Email')
fileBase = FileField('Base OBS file:')
fileObsRover= FileField('Rover OBS file:')
fileNavRover= FileField('Rover NAV file:')
password = TextField('Name')
textarea = IntegerField('Elevation mask angle')
#radios = RadioField('Frequecies', default='option1', choices=[('option1', 'L1'), ('option2', 'L2'), ('option3', 'L1 and L2')])
selects = SelectField('Positioning mode', choices=[('0', 'Single Point Positioning'), ('1', 'DGPS/DGNSS'), ('2', 'Kinematic'), ('3', 'Static Positioning')])
我想在呈现模板之前选择用户选择定位模式作为单点定位。
我已经阅读了有关每个实例删除字段的文章。但是我在为我的表格实施相同的代码时遇到了麻烦。任何建议都非常感谢。
我尝试使用以下代码
def edit_issue():
if Myform.selects.data == 'Single Point Positioning':
del MyForm.fileBase
但是,当选择单点定位
在渲染表单并将其发送到浏览器之前,请使用删除每种命名的字段。看起来您要在将字段发送到浏览器后要删除该字段,并且用户选择了一个特定的选项,在这种情况下,您需要在浏览器中使用JavaScript来操纵表单。
不诉诸JavaScript的替代方案是将您的表单处理分为两个步骤。
定义三个形式如下:
class PositioningModeForm(FlaskForm):
selects = SelectField('Positioning mode', choices=[('0', 'Single Point Positioning'), ('1', 'DGPS/DGNSS'), ('2', 'Kinematic'), ('3', 'Static Positioning')])
class SinglePointPositioningForm(FlaskForm):
email = StringField('Email')
fileObsRover= FileField('Rover OBS file:')
fileNavRover= FileField('Rover NAV file:')
password = TextField('Name')
textarea = IntegerField('Elevation mask angle')
class OtherPointPositioningForm(SinglePointPositioningForm):
selected_id = HiddenField()
fileBase = FileField('Base OBS file:')
请注意,OtherPointPositioningForm
从SinglePointPositioningForm
继承,因此它具有所有必需的输入字段。OtherPointPositioningForm
还具有一个隐藏的字段来存储所选定位模式。您清楚地知道定位模式,您不需要SinglePointPositioningForm
中的此字段。
步骤1。
向浏览器发送一个位置模块,询问用户他们想在
上使用哪种定位模式步骤2
根据选定的定位模式处理形式并内部重定向到两种路线之一。一条路线渲染 SinglePointPositioningForm
,而另一路线则呈现 OtherPointPositioningForm