2016-04-15 24 views
0

私はdjangoアプリケーションでapi呼び出しを行っています。応答はjsonです。現在、テンプレート内のデータをループして、すべてのデータを表に表示しています。DjangoでのJson応答の処理

image_urlを除くすべてのデータが表に示されています。 image_urlにはjpgへのURLパスがあります。このタイプのjsonは通常のstringとは異なる処理が必要ですか?

データが欠落しているフィールドがいくつかあることに気づき、これらのフィールドの前にデータとフィールドがない理由を理解できません。

これはJSONの一つでは、これは私がビュー

def graphs(request): 
    if request.user.is_authenticated(): 
     data = [] 
     r = requests.get('https://api.deckbrew.com/mtg/cards') 
     jsonList = r.json() 
     for cards in jsonList: 
      data.append(cards) 
     return render(request, 'graphs/graphs.html', {'data': data}) 
    else: 
     return redirect('index') 

これは私がマークされたテンプレート 内のデータにアクセスしていますがどのようにしてデータを処理しています方法です

[ 
    { 
    "name": "_____", 
    "id": "_____", 
    "url": "https://api.deckbrew.com/mtg/cards/_____", 
    "store_url": "http://store.tcgplayer.com/magic/unhinged/_____?partner=DECKBREW", 
    "types": [ 
     "creature" 
    ], 
    "subtypes": [ 
     "shapeshifter" 
    ], 
    "colors": [ 
     "blue" 
    ], 
    "cmc": 2, 
    "cost": "{1}{U}", 
    "text": "{1}: This card's name becomes the name of your choice. Play this ability anywhere, anytime.", 
    "power": "1", 
    "toughness": "1", 
    "formats": {}, 
    "editions": [ 
     { 
     "set": "Unhinged", 
     "set_id": "UNH", 
     "rarity": "uncommon", 
     "artist": "Ron Spears", 
     "multiverse_id": 74252, 
     "flavor": "{1}: This card's flavor text becomes the flavor text of your choice. (This ability doesn't work because it's flavor text, not rules text (but neither does this reminder text, so you figure it out).)", 
     "number": "23", 
     "layout": "normal", 
     "price": { 
      "low": 0, 
      "median": 0, 
      "high": 0 
     }, 
     "url": "https://api.deckbrew.com/mtg/cards?multiverseid=74252", 
     "image_url": "https://image.deckbrew.com/mtg/multiverseid/74252.jpg", 
     "set_url": "https://api.deckbrew.com/mtg/sets/UNH", 
     "store_url": "http://store.tcgplayer.com/magic/unhinged/_____?partner=DECKBREW" 
     } 
    ] 
    }, 

オブジェクト行方不明のもの

  {% for card in data %} 
      <tr> 
      <td>{{ card.name }}</td> 
      <td>{{ card.id }}</td> 
      <td>{{ card.url }}</td> 
      <td>{{ card.store_url }}</td> 
      <td>{{ card.types }}</td> 
      <td>{{ card.subtypes }}</td> 
      <td>{{ card.colors }}</td> 
      <td>{{ card.cmc }}</td> 
      <td>{{ card.cost }}</td> 
      <td>{{ card.text }}</td> 
      <td>{{ card.power }}</td> 
      <td>{{ card.toughness }}</td> 
      <td>{{ card.formats }}</td> 
      <td>{{ card.editions }}</td> 
      <td>{{ card.set }}</td>  # MISSING 
      <td>{{ card.set_id }}</td> # MISSING 
      <td>{{ card.rarity }}</td> # MISSING 
      <td>{{ card.artist }}</td> # MISSING 
      <td>{{ card.multiverse_id 
      <td>{{ card.flavor }}</td> # MISSING 
      <td>{{ card.number }}</td>  # MISSING 
      <td>{{ card.layout }}</td>  # MISSING 
      <td>{{ card.price }}</td>  # MISSING 
      <td>{{ card.low }}</td>   # MISSING 
      <td>{{ card.median }}</td>  # MISSING 
      <td>{{ card.high }}</td>  # MISSING 
      <td>{{ card.url }}</td> 
      <td>{{ card.image_url }}</td> # MISSING 
      <td>{{ card.set_url }}</td>  # MISSING 
      <td>{{ card.store_url }}</td> 
      </tr> 
      {% endfor %} 

enter image description here

+0

申し訳ありませんが、私はあなたを失ってしまいました。応答はjsonですが、ビュー関数の応答ははっきりとhtmlですか? – Wtower

+0

最初のコードブロックはjsonです。それから私の見解では、私はjsonをリストに入れました。 htmlテンプレートでアクセスします。 – wuno

+0

jsonの最初のオブジェクトをコピーして貼り付けました。これは私のコードです。ここでの問題は、私が得ているjsonの応答が有効なjsonではないということですか? – wuno

答えて

1

彼らが欠けていない、彼らはcardの一部じゃない、彼らはeditionsオブジェクトの一部ですので、あなたはそのリストを反復処理する必要があります。

{% for card in data %} 
    {% for edition in card.editions %} 
     <td> {{edition.set }}</td> 
    {% endfor %} 
{% endfor %} 
+0

それでも、multiverse_idはまだ表示されますか? – wuno

+0

@wuno - それは終了タグが見つからないので、私は驚くだろう – Sayse

+0

それは私の質問のタイプミス正しい私のアプリです。そして確かに私のページに情報を表示します。それは私が前と後にデータが欠けているということです。私はどのエディションをデータに追加する必要があるのか​​、なぜ表示するのか、表示しないのかを見ることができます。エディションにデータを追加して同様の方法でアクセスするだけですか? data.append(editons)card in data card.image_url – wuno

関連する問題