根据精选烧瓶显示隐藏表单元素



我已经为我的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:')

请注意,OtherPointPositioningFormSinglePointPositioningForm继承,因此它具有所有必需的输入字段。OtherPointPositioningForm还具有一个隐藏的字段来存储所选定位模式。您清楚地知道定位模式,您不需要SinglePointPositioningForm中的此字段。

步骤1。

向浏览器发送一个位置模块,询问用户他们想在

上使用哪种定位模式

步骤2

根据选定的定位模式处理形式并内部重定向到两种路线之一。一条路线渲染 SinglePointPositioningForm,而另一路线则呈现 OtherPointPositioningForm

最新更新