2015-09-24 23 views
6

Sunucu API'm için Flask Restful kullanıyorum ve sunucuya, değerlerden birinin sözlüklerin bir listesi olduğu bir sunucuya gönderiyorum.Flask İstek üzerine bir liste kabul et

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

Ben sorun yalnızca listenin birinci elemanının dönen [ 'my_list'] değiştirgeler. Oysa tüm listeyi request.data'dan görebiliyorum.

Bu Bu yanlış gidiyorum

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

args [ 'my_list'] ise

{"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} 

request.data nedir? Böyle verilere erişim

+1

bunun yerine request.data – Dan

+0

onu getir Thats biraz hacky –

cevap

7

Ayrıştırıcınız nedir add_argument? products_in_basket, istenen verilere gerçek bir anahtar mıdır? Yoksa keyfi bir isim sağlamaya ve/veya tasarıyı yeniden adlandırmaya mı çalışıyorsunuz?

Ayrıştırma isteği belgelerinden Multiple Values & Lists'a bir göz atın.

Sen artık şöyle bir şey yapıyor isteyebilirsiniz ...

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

, aksiyon = 'ekleme' çözümü oldu ederiz :) –

1

Dene:

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

Bu my_list listedeki yerinden dict nesneleri yineleme sağlayacaktır.

İlgili konular