我创建了一个Flask应用程序,在我的本地计算机上一切正常,我可以从HTML页面上的表单中插入数据,然后将数据传递给程序进行详细说明。
我想在Ubuntu服务器上移动这个应用程序,我使用这个guide设置所有的东西,如nginx,python,flask,uswgi。 Web服务器工作,我可以访问网页并插入我的所有数据,但是当程序将数据传递到另一页时没有正确排序,可能第三个字段位于第二个位置,依此类推。
我不明白为什么在我的本地机器上没有发生这种情况。
这里有一个例子:
ImmutableMultiDict
([('group-0[1][macchine]', 'M02'), ('group-0[1][tempo_previsto_setup]', '17'), ('group-0[0][tempo_previsto_setup]', '13'),
('group-0[0][macchine]', 'M01'), ('group-0[0][tempo_previsto_lavorazione]'
('group-0[2][macchine]', 'M03'), ('group-0[2][tempo_previsto_lavorazione]', '22'), ('group-0[0][tipo_lavorazione]', '')
这只是几个字段,但列表更长,因为你可以看到M01
位于第二个位置,但在网页中是第一个字段。
基本上每个group-0[1][macchine]
应该有他的group-0[1][tempo_previsto_setup]'
,'group-0[0][tempo_previsto_lavorazione]'
,但你可以看到M02
有两个'group-0[0][tempo_previsto_lavorazione]
一个与[1]
(这是正确的)和一个与[0]
that应该由M01
拥有
这导致了很多问题,因为程序是为了正确排序数据而编写的
nginx有什么问题?
我这样得到ImmutableMultiDict
:
@app.route('/ordini/conferma', methods=['GET', 'POST'])
def conferma_ordine():
global data
if request.method == 'POST':
data = request.form
print(data)
Calcolo_tempistiche.ottenimento_variabili(data)
array_ordine = Calcolo_tempistiche.array_ordine
return render_template('ordine_eseguito.html', **locals())
data = []
nginx没有任何问题。基本上你使用ImmutableMultiDict
并且没有为这种数据类型维护顺序。如果您需要特定的数据顺序,那么您应该使用ImmutableOrderedMultiDict
存储数据并作为响应发送。
更新:
免责声明:我不熟悉烧瓶,我的解决方案将是一个黑客,我不建议在生产中使用,而不是从知道烧瓶的人那里得到验证。
根据您编写的代码将ImmutableMultiDict
格式更改为ImmutableOrderedMultiDict
。首先,您需要将其转换为普通字典,使用this answer to follow。
imd = ImmutableMultiDict([('default', u''), ('required', u'on'), ('name', u'short_text'), ('name', u'another')])
x = imd.to_dict(flat=False)
现在,根据您需要数据的顺序,您应该添加它。
new_imd = ImmutableOrderedMultiDict([('default', x['default'][0]), ('required', x['required'][0]), ('name', x['name'][0]), ('name', x['name'][1])])
我没有找到我的问题的解决方案,但我找到了一种方法来订购每个变量。
完整的变量列表是:qazxsw poi
我会在这里编写代码来订购该列表,也许它对某人有帮助:
ImmutableMultiDict([('id_ordine', '1650958108523345 '), ('data_start', '2018-08-06'), ('group-a[0][id_prodotto]', 'Frutta'), ('group-a[0][quantita]', '2'), ('group-0[0][macchine]', 'M01'), ('group-0[0][tipo_lavorazione]', ''), ('group-0[0][tempo_previsto_checkup]', '12'), ('group-0[0][tempo_previsto_setup]', '12'), ('group-0[0][tempo_previsto_lavorazione]', '14'), ('group-0[0][nota]', ''), ('group-0[1][macchine]', 'M02'), ('group-0[1][tipo_lavorazione]', ''), ('group-0[1][tempo_previsto_checkup]', '13'), ('group-0[1][tempo_previsto_setup]', '14'), ('group-0[1][tempo_previsto_lavorazione]', '15'), ('group-0[1][nota]', ''), ('group-a[1][id_prodotto]', 'verdura'), ('group-a[1][quantita]', '2'), ('group-1[0][macchine]', 'M03'), ('group-1[0][tipo_lavorazione]', ''), ('group-1[0][tempo_previsto_checkup]', '14'), ('group-1[0][tempo_previsto_setup]', '15'), ('group-1[0][tempo_previsto_lavorazione]', '16'), ('group-1[0][nota]', '')])