get
ile bir api isteği yapan bu işleve sahibim. Yanıt geri geliyor ve bekleniyor ve terminale geri gönderilen nesnelerin her bir adını yazdırıyorum. Ancak şablondaki verileri yazdırmak için aynı döngüde kullandığımda, şablon sayfasında yalnızca son nesnenin adı işleniyor.Django Yinelenen Json Yanıtı Şablon İçinde
Belki de for döngüsümü düzgün bir şekilde yürütmüyorum diye düşünüyordum ama bu doğru olsaydı neden veri çıkışım terminalde doğru çıktı? Ben for döngüsü içinde data.append taşıdığınızda Ben sadece son nesneleri
{% for card in data %}
<tr>
<td>{{ card.name }}</td>
</tr>
{% endfor %}
isim olsun
Bu benim şablon # içindedirdef 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')
Bence
aynı ad ekler her seferinde listeye yanıtta bir kart var. Eğer döngü dışında
cardData = {}
ilan ederek aynı örneği üzerinde yazılı olan ve aynı sözlüğü dizinin üzerine itiliyor çünkü
for cards in jsonList:
cardData['name'] = cards['name']
print(cards['name'])
data.append(cardData)
Teşekkür ederim bu sorun oldu ... Sigh. her zaman saçma bir şeydir. 6 dakika sonra kabul edeceğim. Teşekkür ederim. – wuno
Evet, daha basit yol. Lütfen bana ulaşın, böylece gelecekte hayatım daha kolay olacak. Böyle bir cevapta her alan için yeni bir liste kavrayışı oluşturabilir miyim? isim | tipi | hit noktaları vb? Karmaşık jsonu "türler" gibi nasıl kullanabileceğimi nerede okuyabilirim: [ "yaratık", "uçan", "mucizeler" ], – wuno
@wuno liste anlamalarıyla ilgili daha fazla bilgiyi buradan edinebilirsiniz [burada] (https: // docs. python.org/2/tutorial/datastructures.html#list-comprehensions). Eğer işlemek istediğiniz daha fazla tuş varsa, sadece şunu yapın: e-posta: 'data = [{'name': kartlar ['name']," type ": kartlar [" type "]} jsonList'teki kartlar için) – alecxe