如何创建可以更新的WTForm

时间:2019-08-26 16:50:11

标签: html flask jinja2 flask-wtforms flask-bootstrap

我的表单的选择字段的选项取决于可用的文件夹,即['folder1','folder2'...]。创建新目录并使用该表单访问网页时,我希望该表单进行更新,但是除非重新启动flask,否则我不会这样做。

我尝试通过再次调用返回该目录中文件夹列表的函数来处理表单

这是表格的代码。 directory_names是一个函数,该函数返回该目录中文件的所有名称(我已经检查了这个名称,它工作得很好)。

class CreateForm(FlaskForm):
    self.directory = SelectField('Data Name: ', choices=directory_names('data/'))
    self.model = SelectField('Model: ', choices=[('2S', 'TwoBodySingleSpecies'), ('2M', 'TwoBodyMultiSpecies'), ('3S', 'ThreeBodySingleSpecies')])
    self.potential = BooleanField('Plot potential')
    self.test_gp = BooleanField('Test GP')

我有一个网页,允许用户在该目录中创建文件,然后重定向到该目录,我需要在该目录中显示这些新文件。但是,由于上述类仅在执行flask运行时实例化一次,因此无法对其进行更新。

@app.route("/create", methods=['GET', 'POST'])
def create():

    form = CreateForm()

    if form.validate_on_submit():
        directory = form.directory.data + '/'
        model = form.model.data
        potential = form.potential.data
        test_gp = form.test_gp.data

        mff = Tutorial()
        mff.load('data/' + directory)

        return redirect("/")

    return render_template("create.html", form=form)

如何更改此设置,以便每次访问“ / create”时都可以看到表单的最新版本?

例如原始目录具有[“ folder1”] 用户添加“ folder2”和“ folder3”。

当我去创建并查看表单时,我只会看到“ folder1”作为选项。

如果有帮助,请参见HTML。

<form action="/create" method="POST">
  {{ form.hidden_tag() }}
  <div class="container-fluid">
    {{ wtf.form_field(form.directory) }}
  </div>

0 个答案:

没有答案