如何制作Flask申请表返回订购的dict数据?

2024-09-25 06:37:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前在我的flask web应用程序上有一个表单,它有+-100个输入。要请求一行中的每个值,我使用: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上,而使用nginx&gunicorn的Debian VPS上是live版本。你知道吗


Tags: 版本web应用程序flaskhello顺序immutablemultidictintro1
1条回答
网友
1楼 · 发布于 2024-09-25 06:37:16

默认情况下,当调用^{}时,Flask返回ImmutableMultiDict(不可变dict),但是如果您希望数据按顺序排列,也可以让它返回ImmutableOrderedMultiDict(有序不可变dict)。就这么做吧:

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

相关问题 更多 >