【问题标题】:Flask Restful accept a list in a post requestFlask Restful 在 post 请求中接受列表
【发布时间】:2015-12-22 14:14:12
【问题描述】:

我正在为我的服务器 API 使用 Flask Restful,并向服务器发布一个字典,其中一个值是字典列表。

parser.add_argument('products_in_basket', type=list)
def post(self, user_id):
   args = parser.parse_args()
   print request.data
   print args['my_list']

我遇到的问题是 args['my_list'] 只返回列表的第一个元素。而我可以从 request.data 中查看所有列表。

这是request.data

{"address_id":1,"my_list":[{"size":12,"colour":"red","id":34219,"quantity":1},{"size":10,"colour":"red","id":12219,"quantity":2},{"size":8,"colour":"red","id":5214,"quantity":3}],"payment_card_id":1}

这是 args['my_list']

[u'colour', u'quantity', u'id', u'size']

我哪里错了?

【问题讨论】:

  • 所以改为从 request.data 中获取

标签: python flask flask-restful


【解决方案1】:

您的解析器add_argument 选项是什么? products_in_basket 是所请求数据的实际键吗?或者您是否尝试提供任意名称和/或重命名字典?

看看 Multiple Values & Lists 来自 Request Parsing 文档。

你可能想要做这样的事情......

parser = reqparse.RequestParser()
parser.add_argument('my_list', action='append')

【讨论】:

  • 谢谢,action='append' 是解决方案 :)
  • 能否更新提供的链接?它显示权限被拒绝。
【解决方案2】:

尝试像这样访问数据:

for product in args.my_list:
        size = product.get('size')
        etc....

这将允许您遍历 my_list 列表中的所有 dict 对象。

【讨论】:

    【解决方案3】:

    您可以在 add_argument 函数中使用 location 参数。这将指定您正在使用 json 并将其他元素附加到列表中。

    parser = reqparse.RequestParser()
    parser.add_argument('my_list', location='json')
    

    【讨论】:

      猜你喜欢
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 2018-11-13
      • 2017-01-30
      • 2021-05-15
      • 2023-03-14
      相关资源
      最近更新 更多