【问题标题】:Flask's request.args return different data between Python2 and Python3 [duplicate]Flask的request.args在Python2和Python3之间返回不同的数据[重复]
【发布时间】:2019-06-25 04:05:05
【问题描述】:

我正在将 Flask 用于 Web 应用程序。我发现当我将 URL 参数转换为字典时,request.args 返回的数据不同。

代码如下。

如何让Python3下的Flask返回和Python2下一样的数据?

from flask import Flask,request
import numpy as np
import json

app = Flask(__name__)

@app.route('/')
def hello():
    request.parameter_storage_class = dict
    return json.dumps(dict(request.args))

app.run()
  • Python2:{"abc": ["hello"]}
  • Python3:{"abc": "hello"}

【问题讨论】:

  • 在我的情况下,结果等于{"abc": "hello"},请检查您的flaskjson 版本

标签: python flask


【解决方案1】:

这看起来是由于 Python 2 和 3 之间 MultiDicts 转换为 dicts 的方式不同,这令人惊讶,因为您正在设置 parameter_storage_class。

如果您希望在 Python 2 和 3 中保持一致的行为,可以将 parameter_storage_class 保留为默认的 MultiDict,并使用以下选项之一代替 dict(request.args)

def hello():
    return request.args.to_dict()  # == {"abc": "hello"}
    # or:
    return request.args.to_dict(flat=False)  # == {"abc": ["hello"]}

【讨论】:

    猜你喜欢
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 2015-06-13
    相关资源
    最近更新 更多