Flask Restful принимает список в почтовом запросе

Я использую Flask Restful для API своего сервера и отправляю на сервер словарь, одним из значений которого является список словарей.

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.

Это запрос.данные

{"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']

Где я ошибаюсь?


person Community    schedule 24.09.2015    source источник
comment
поэтому вместо этого извлеките его из request.data   -  person Dan    schedule 25.09.2015


Ответы (3)


Каковы параметры вашего парсера add_argument? Является ли products_in_basket фактическим ключом к запрошенным данным? Или вы пытаетесь указать произвольное имя и/или переименовать dict?

Взгляните на Несколько значений и списков из документации по Синтаксическому анализу запросов.

Вместо этого вы можете сделать что-то подобное...

parser = reqparse.RequestParser()
parser.add_argument('my_list', action='append')
person siegerts    schedule 25.09.2015
comment
Спасибо, action='append' было решением :) - person ; 26.09.2015
comment
Не могли бы вы обновить предоставленную ссылку? Он показывает, что разрешение отклонено. - person Ruthwik; 15.04.2018

Попробуйте получить доступ к данным следующим образом:

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

Это позволит вам перебрать все объекты dict в списке my_list.

person Matt Healy    schedule 25.09.2015

Вы можете использовать параметр местоположения в функции add_argument. Это укажет, что вы работаете с json, и добавит остальные элементы в список.

parser = reqparse.RequestParser()
parser.add_argument('my_list', location='json')
person Kofi Nartey    schedule 30.07.2019