我重新提交了这个问题,因为我相信我知道发生了什么事,但不确定如何解决。
我创建了一个例程,该例程旨在执行以下操作: (1)从两个下拉菜单(A和B)中进行选择 (2)然后将A和B中的选择用作Python脚本的输入,该Python脚本为第三个下拉菜单(C)创建列表 (3)用户选择C,然后将其用于从Pandas数据框中选择信息,该数据将填充第四个下拉菜单。 (4)第四次选择后,应该会出现一个漂亮的情节。
我认为问题在于,每次提交表单后,表单都会被覆盖。这是代码的外壳。
def pulldown_test():
results = []
year_now = datetime.now().year
years = np.arange(2011,year_now+1,1)
year_list = [(n, year) for n, year in zip(np.arange(0,len(years)), years)]
basins = ['AL','EP','CP','WP']
basin_list = [(n,basin) for n, basin in zip(np.arange(0,len(basins)), basins)]
form = pulldown_form()
if form.stormyear.choices is None:
print ('Here we initialize the form!')
form.stormyear.choices = year_list
form.stormbasin.choices = basin_list
if form.stormname.choices is None:
print ('Hi ZIPPY! No Stormname choices exist')
form.stormname.choices = [(-1, 'Name List')]
else:
form.stormname.choices = name_list
if form.stormdate.choices is None:
form.stormdate.choices = [(-1, 'Date List')]
else:
form.stormdate.choices = date_list
print('Here we assign the session info')
session['stormbasin'] = form.plotwant.data
session['stormyear'] = form.stormyear.data
if ( form.stormyear.data is not None ) & ( form.stormbasin.data is not None ):
if form.stormname.data > 0:
if form.stormdate.data > 0:
print ('From here we can plot')
else:
print ('Now we collect dates')
print ('Did we lose the stormname? ',form.stormname.data)
names = storms.name.unique()
form.stormyear.choices = year_list
form.stormbasin.choices = basin_list
form.stormname.choices = name_list
dates = storms[storms.name == names[form.stormname.data]].dates.values
date_list = [(n, date) for n, date in zip(np.arange(0,len(dates)), dates)]
form.stormdate.choices = date_list
else:
print ('Now we find a name')
form.stormyear.choices = year_list
form.stormbasin.choices = basin_list
storms = oti.collect_all_names_and_times( years[ form.stormyear.data ], basins[ form.stormbasin.data ] )
names = storms.name.unique()
name_list = [(n, name) for n, name in zip(np.arange(0,len(names)), names)]
form.stormname.choices = name_list
return render_template('pulldown_test.html', results=results, form=form)
这就是发生的事情
第一步很正常,我从A和B获得了信息。没有问题。 然后将A和B输入到Python例程中,然后我得到了信息以填充列表C(风暴名称)
因此,我选择风暴名称...,然后代码进入一个数据框并选择该名称的可用日期并填充列表D
但是,当我在渲染之后返回时...列表A,B和D被填充,但是列表C(风暴名称)消失了,并且被重置为无。
我假设这是由于每个步骤都重新加载了相同的表格。如果是这样,解决这个障碍并得出阴谋的正确逻辑是什么?