nginx数据发布未正确排序

问题描述 投票:0回答:2

我创建了一个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 = []
python nginx flask
2个回答
1
投票

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])])

0
投票

我没有找到我的问题的解决方案,但我找到了一种方法来订购每个变量。

完整的变量列表是: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]', '')])
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.