Flask 获取一个多维数组作为数组发布到它

Flask get a multi-dimensional array posted to it as an array

注意:使用 Flask 和 Reactjs

我目前正在努力解决一个错误,我正在从我的前端向我的后端发布一个 3 维数组,我正在尝试使用 request.form.get('array', type=list),但它最终被接收为一维数组。

前端:

let data = new FormData();
this.array = [[[1,4],[2,4]],[[3,1],[2,4]],[[7,4],[1,1]]]
data.append("array", this.array);
return axios
      .post(this.url+`/post_arr`, data, {
        headers: {
          "Content-Type": "multipart/form-data",
        },
      })
      .then((res) => {console.log('hi')
        })
        
      })  }

后端:

@app.route('/post_arr',methods=['POST'])
def test():
print(request.form.get('array',type=list))
>['1','4','2','4','3','1','2','4','7','4','1','1']

它不是将数组作为 3 维数组检索,而是作为扁平的 1 维数组检索,这并不理想。有办法解决吗?

当您将多维数组附加到 javascript formData 对象时,它会自动转换为扁平字符串。

你在javascript中需要的是:

let data = new FormData();
this.array = [[[1,4],[2,4]],[[3,1],[2,4]],[[7,4],[1,1]]];
data.append("array", JSON.stringify(array));

然后在烧瓶中:

getlist 方法就是您要找的。

尝试以下操作:

array = request.form.getlist('array')

如果它 return 在这样的字符串中 ['[[[1,4],[2,4]],[[3,1],[2,4]],[[7,4],[1,1]]]'],只需使用第一个索引获取列表:array[0]

应该return

[[[1,4],[2,4]],[[3,1],[2,4]],[[7,4],[1,1]]]