我正在将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()
{"abc": ["hello"]}
{"abc": "hello"}
答案 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"]}