我的表单的选择字段的选项取决于可用的文件夹,即['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>