PythonBottle:访问请求POST数据中的数组变量

Python Bottle: Accessing array variable inside request POST data

本文关键字:数组 变量 数据 POST 访问 请求 PythonBottle      更新时间:2023-09-26

我最近收到了一个部分完成的项目,我是使用Bottle的新手。我有一种情况,我在AJAX请求中发送一个字典,而Bottle在服务器端。字典看起来像这样(在JavaScript中):

var myInt = 5;
var myArray = [0, 1, 2];
var data = {
    myInt: myInt,
    myArray: myArray
};

然后,在Python中,我想读入这些数据。我好像搞不懂数组。我可以很好地得到int。我已经尝试了几种方法,但对我来说最有意义的方法仍然无效:

try:
    myInt = int(request.forms.get('myInt'))
    myArray = request.forms.getall('myArray')

这将导致myArray的列表为空。有人能给我指正确的方向吗?我在StackOverflow上读过所有类似的问题,但都无济于事。

我知道我可以把它变成一个用管道或其他东西分隔的字符串,但我想看看数组是否可以像这样发送。

谢谢!

使用request.json:

try:
    myInt = request.json['myInt']
    myArray = request.json['myArray']

(假设您的客户端正在将content-type设置为application/json。)

这里有一个很好的例子。

不确定这是否是唯一的问题,但(我认为)您可能混淆了JSON数组和getall的使用。您应该使用get,而不是getall,此处:

myArray = request.params.get('myArray')

如果我正确理解代码,getall适用于具有多个同名参数的情况,如http://example.com/get?foo=1&foo=2

另一方面,myArray变量只是对数组的单个引用。

希望这有帮助(即使它不能解决你的问题)。

var myInt = 5;
var myArray = [0, 1, 2];
var data = {
    myInt: myInt,
    myArray: JSON.stringify(myArray)
};

使用js中的JSON.stringify和瓶内json_loads():

myInt = request.params.get('myInt')
myArray =  json_loads(request.params.get('myArray'))