2015-09-24 7 views
6

Ich benutze Flask Restful für meine Server-API und poste auf dem Server ein Wörterbuch, wo einer der Werte eine Liste der Wörterbücher ist.Flask Restful nehmen Sie eine Liste in einer Beitragsanfrage an

Das Problem, das ich habe, ist args ['meine_liste'] gibt nur das erste Element der Liste zurück. Während ich alle Liste von request.data sehen kann.

Dies ist 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} 

Dies ist args [ 'my_list']

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

Wohin gehe ich falsch?

+1

so holen sie aus request.data statt – Dan

+0

Das ist ein bisschen hacky –

Antwort

7

Was sind Ihre Parser add_argument Optionen? Ist products_in_basket ein tatsächlicher Schlüssel zu den angeforderten Daten? Oder versuchst du einen beliebigen Namen anzugeben und/oder das Diktat umzubenennen?

Werfen Sie einen Blick auf Multiple Values & Lists von der Request Parsing Dokumentation.

Vielleicht möchten Sie so etwas wie dies stattdessen zu tun ...

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

Danke action = ‚append‘ war die Lösung :) –

1

Versuchen Sie, die Daten wie folgt zugreifen:

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

Dies ermöglicht es Ihnen, über alle dict Objekte in der my_list Liste iterieren.