python - 使用 nginx 的数据发布未正确排序
问题描述
我创建了一个 Flask 应用程序,在我的本地计算机上一切正常,我可以从 HTML 页面上的表单中插入数据,然后将数据传递给程序进行详细说明。
我想在 Ubuntu 服务器上移动这个应用程序,我使用这个指南设置了所有的东西,比如 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 = []
解决方案
nginx没有任何问题。基本上您正在使用ImmutableMultiDict
并且不维护此类数据类型的顺序。如果您想要特定的数据顺序,那么您应该使用ImmutableOrderedMultiDict
它来存储您的数据并发送它作为响应。
更新:
免责声明:我不太熟悉烧瓶,我的解决方案将是一个 hack,我不建议在没有从非常了解烧瓶的人那里得到验证的情况下在生产中使用它。
根据您编写的将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])])
推荐阅读
- css - 从 Woocommerce 中的 Select2 下拉选项中删除项目符号
- powershell - FileWatcher 使用 Net.Mail.MailMessage 发送多封电子邮件
- batch-file - 如何制作批处理文件以从许多文本文件中选择最大值并附加到新文件
- excel - VBA中循环内的if语句 - excel
- jdbc - Kafka Connect 转换:从 json 字段中提取 Long 值并作为键插入
- ruby - 加载 pact_helper.rb 时出现 PACT 错误(格式错误的版本号字符串)
- azure - 如何在 azure 模板变量中引用现有资源项
- c - 两个c文件之间的斐波那契共享内存进程
- angular - 在数组中使用时角模型类给出错误
- containers - 如何让 GCE 实例在其部署的容器完成时停止?