繁体   English   中英

如何使 Flask request.form 返回有序的字典数据?

[英]How to make Flask request.form return ordered dict data?

我目前在我的 flask web 应用程序上有一个表格,它有 +- 100 个输入。 要请求 1 行中的每个值,我使用: f = request.form 如果我在本地版本上打印它,我将按完整顺序得到我所有值的完整列表:

ImmutableMultiDict([('intro1', 'hello'), ('intro2', 'eargr'), ('intro3', 'rferferaf'), ('intro4', 'eragaerg'), ('intro5', 'aergferaf'), ('intro6', 'aerfa'), ('intro7', 'faf'),`('intro8', 'fazfa'), ('intro9', 'f'), ('intro10', 'f'), ('intro11', 'f'), ('intro12', 'ezfzef'),` ('intro13', 'f'), ('liab1', ''), ('liab2', 'hello'), 
    ('liab3', ''), ('liab4', 'nvion'),....

如果我在我的实时版本上打印它,它会以完全随机的顺序返回它:

ImmutableMultiDict([('liab43', 'hello'), ('pl33', ''), ('inv3', ''), ('fin5', ''), ('inv10', ''), `('pl44', ''), ('liab46', ''), ('liab17', ''), ('liab49', ''), ('intro10', 'ovov o'), ('fin9', ''), ('pl30', ''), ('pl15', ''), ('liab10', ''), ('pl34', 'hello'), ('pl24', ''), ('intro13', 'nvion'), ('liab31', ''), ('pl39', ''), ('intro3', 'zenfoczoi'), ('liab1', ''), ('inv15', ''), ('pl16', ''), ('liab50', ''), ('intro1', 'hello'), ('intro8', 'connfvo'), ('pl38', ''), ('fin4', ''), ('pl49', ''), ('pl21', ''), ('fin6', ''), ('intro2', 'hefhuze'), ('liab22', ''), ('pl61', ''), ('pl18', ''), ('fin10', ''), ('liab53', ''), ('liab30', ''),`

我怎样才能解决这个问题? 因为两个版本完全一样,没有区别。 本地版本在 Windows 上,实时版本在 Debian VPS 上,使用 nginx 和 gunicorn。

默认情况下,当您调用request.form时, Flask 返回一个ImmutableMultiDict (不可变字典),但如果您希望数据按顺序返回,也可以让它返回ImmutableOrderedMultiDict (有序不可变字典)。 只需这样做:

from flask import Flask, Request
from werkzeug.datastructures import ImmutableOrderedMultiDict

class MyRequest(Request):
    """Request subclass to override request parameter storage"""
    parameter_storage_class = ImmutableOrderedMultiDict

class MyFlask(Flask):
    """Flask subclass using the custom request class"""
    request_class = MyRequest

app = MyFlask(__name__)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM