使用nginx的数据发布未正确排序

时间:2018-08-28 10:44:48

标签: python nginx flask

我创建了一个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]拥有的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 = []

2 个答案:

答案 0 :(得分:1)

nginx没有任何问题。基本上,您使用的是ImmutableMultiDict,并且不维护此类数据类型的顺序。如果您想要特定顺序的数据,则应使用ImmutableOrderedMultiDict存储数据并作为响应发送。

更新:

免责声明:我不太熟悉烧瓶,而我的解决方案将是hack,我建议您在未经非常了解烧瓶的人进行验证的情况下,不建议将其用于生产中。

根据您编写的将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])])

答案 1 :(得分:0)

我没有找到解决问题的方法,但确实找到了对每个变量进行排序的方法。

变量的完整列表为: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]', '')])

我将在此处编写代码以订购该列表,也许对某人可能会有帮助:

num_pr = 0

for pr in range(len(variabili)):
    campo = []

    for pr in variabili:
        prodotto = []
        if pr == "group-a[" + str(num_pr) + "][id_prodotto]":
            campo = [variabili["group-a[" + str(num_pr) + "][id_prodotto]"]]
            prodotto.append(campo)

            if "group-a[" + str(num_pr) + "][quantita]" in variabili:
                campo = [variabili["group-a[" + str(num_pr) + "][quantita]"]]
                prodotto.append(campo)

                num_mc = 0
                for _ in range(len(variabili)):

                    for _ in range(len(variabili)):
                        if 'group-'+ str(num_pr) +'[' + str(num_mc) + '][macchine]' in variabili:
                            campo = [variabili['group-'+ str(num_pr) +'[' + str(num_mc) + '][macchine]']]

                            for tmp in variabili:
                                if 'group-'+ str(num_pr) +'[' + str(num_mc) + '][tempo_previsto_checkup]' in variabili:
                                    campo.append(variabili['group-'+ str(num_pr) +'[' + str(num_mc) + '][tempo_previsto_checkup]'])

                                    if 'group-'+ str(num_pr) +'[' + str(num_mc) + '][tempo_previsto_setup]' in variabili:
                                        campo.append(variabili['group-'+ str(num_pr) +'[' + str(num_mc) + '][tempo_previsto_setup]'])

                                        if 'group-'+ str(num_pr) +'[' + str(num_mc) + '][tempo_previsto_lavorazione]' in variabili:
                                            campo.append(variabili['group-'+ str(num_pr) +'[' + str(num_mc) + '][tempo_previsto_lavorazione]'])
                                            prodotto.append(campo)
                                            break

                            num_mc += 1

                ordine.append(prodotto)

    num_pr += 1

print(ordine)