Python +烧瓶-从多个下拉菜单中选择

时间:2019-02-11 20:23:00

标签: python flask drop-down-menu flask-wtforms

我重新提交了这个问题,因为我相信我知道发生了什么事,但不确定如何解决。

我创建了一个例程,该例程旨在执行以下操作: (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(风暴名称)消失了,并且被重置为无。

假设这是由于每个步骤都重新加载了相同的表格。如果是这样,解决这个障碍并得出阴谋的正确逻辑是什么?

0 个答案:

没有答案