我有這個功能,正在向api請求get
。響應會回來並預期,並且我將打印出返回到終端的對象的每個名稱。但是,當我使用相同的循環打印模板中的數據時,只有最後一個對象的名稱正在模板頁面上呈現。Django在模板中迭代Json響應
我在想也許我沒有正確執行我的循環,但如果這是真的,爲什麼我的數據在終端輸出正確。
在我看來
def graphs(request):
if request.user.is_authenticated():
data = []
r = requests.get('https://api.deckbrew.com/mtg/cards')
jsonList = r.json()
cardData = {}
for cards in jsonList:
cardData['name'] = cards['name'] # Only last object name
print(cards['name']) # Prints to termainl correct
data.append(cardData)
return render(request, 'graphs/graphs.html', {'data': data})
else:
return redirect('index')
這是我的模板#我只得到了最後一個對象命名
{% for card in data %}
<tr>
<td>{{ card.name }}</td>
</tr>
{% endfor %}
當我移動data.append裏面的for循環它追加同名列表中每次有響應時都有一張卡片。
for cards in jsonList:
cardData['name'] = cards['name']
print(cards['name'])
data.append(cardData)
謝謝你這個問題......嘆氣。這總是荒謬的。我會在6分鐘後再接受。謝謝。 – wuno
是你更簡單的方法。請與我聯繫,以便將來我的生活會更輕鬆。我可以在響應中爲每個字段創建一個新的列表理解?名稱|鍵入|生命點等?我在哪裏可以閱讀如何處理複雜的json,如「類型」:[ 「生物」,「飛行物」,「摩爾」 ], – wuno
@wuno你可以閱讀更多關於列表解析[這裏](https:// docs。 python.org/2/tutorial/datastructures.html#list-comprehensions)。如果有更多的密鑰需要處理,比如:'data = [{'name':cards ['name'],「type」:cards [「type」]} – alecxe