сообщение с nginx не отсортировано правильно - PullRequest
0 голосов
/ 28 августа 2018

Я создал приложение Flask, на моем локальном компьютере все работает нормально, я могу вставить данные из формы на HTML-страницу и затем передать данные в программу для ее разработки.

Я хотел переместить это приложение на сервер Ubuntu, я настроил все такие вещи, как nginx, python, flask, uswgi, используя это руководство . Веб-сервер работает, я могу получить доступ к веб-страницам и вставить все свои данные, но когда программа передает данные на другую страницу, они сортируются неправильно, возможно, третье поле находится на второй позиции и т. Д.

Я не понимаю, почему это не происходит на моей локальной машине.

вот пример:

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 голосов
/ 30 августа 2018

Я не нашел решения для своего вопроса, но нашел способ упорядочить каждую переменную.

полный список переменных был: 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)
0 голосов
/ 28 августа 2018

С nginx все в порядке. В основном вы используете ImmutableMultiDict, и порядок для таких типов данных не поддерживается. Если вам нужен определенный порядок данных, вы должны использовать ImmutableOrderedMultiDict для хранения ваших данных и отправки их в ответ.

UPDATE:

Отказ от ответственности: Я не очень разбираюсь в фляге, и мое решение было бы хаком, которое я не рекомендую использовать в производстве, не получив подтверждение от кого-то, кто очень хорошо знает флягу.

В соответствии с кодом, который вы написали, измените формат ImmutableMultiDict на ImmutableOrderedMultiDict. Сначала вам нужно преобразовать его в обычный словарь, используйте этот ответ, чтобы следовать .

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])])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...