【问题标题】:Flask get a multi-dimensional array posted to it as an arrayFlask 获取一个多维数组作为数组发布给它
【发布时间】:2021-10-02 06:30:29
【问题描述】:

注意:使用 Flask 和 Reactjs

我目前正在努力解决一个错误,我正在将一个 3-d 数组从我的前端发布到我的后端,并且我正在尝试使用 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 维数组,这并不理想。有没有办法解决这个问题?

【问题讨论】:

    标签: python reactjs http flask stringify


    【解决方案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')
    

    如果它以类似['[[[1,4],[2,4]],[[3,1],[2,4]],[[7,4],[1,1]]]'] 的字符串返回,只需使用第一个索引获取列表:array[0]

    应该返回

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

    【讨论】:

    • 由于某种原因它返回相同的扁平数组。不知道发生了什么...
    • @S1534 我更新了答案 - 现在再试一次 :)
    猜你喜欢
    • 2011-12-12
    • 2020-07-08
    • 1970-01-01
    • 2015-08-23
    • 2013-10-31
    • 1970-01-01
    • 2021-10-25
    • 2014-09-12
    • 1970-01-01
    相关资源
    最近更新 更多