Python Bottle:在请求POST数据中访问数组变量

时间:2013-07-06 00:21:21

标签: javascript python request bottle

我最近交了一个部分完成的项目,我刚开始使用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上读过每个类似的问题都无济于事。

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

谢谢!

3 个答案:

答案 0 :(得分:1)

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

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

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

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

希望这会有所帮助(即使它无法解决您的问题)。

答案 1 :(得分:1)

使用request.json

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

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

这是一个不错的example

答案 2 :(得分:0)

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