Flask的request.args在Python2和Python3之间返回不同的数据

时间:2019-06-25 04:05:05

标签: python flask

我正在将Flask用于网络应用。而且我发现request.args在将URL参数转换为字典时返回了不同的数据。

代码在下面。

如何使Flask在Python3下返回的数据与在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"}

1 个答案:

答案 0 :(得分:0)

这似乎是由于在Python 2和3之间将MultiDicts转换为dict的方式不同,这令人惊讶,因为您正在设置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"]}