SORU
21 Ocak 2011, Cuma


Can't döngü Django şablon defaultdict

import collections

data = [
  {'firstname': 'John', 'lastname': 'Smith'}, 
  {'firstname': 'Samantha', 'lastname': 'Smith'}, 
  {'firstname': 'shawn', 'lastname': 'Spencer'}, 
]

new_data = collections.defaultdict(list)

for d in data:
    new_data[d['lastname']].append(d['firstname'])

print new_data

İşte çıkış:

defaultdict(<type 'list'>, {'Smith': ['John', 'Samantha'], 'Spencer': ['shawn']})

ve işte şablonun:

{% for lastname, firstname in data.items %}
  <h1> {{ lastname }} </h1>
  <p> {{ firstname|join:", " }} </p>
{% endfor %}

Ama benim şablon döngü çalışmıyor. Hiçbir şey gösterir. Hatta bana bir hata vermez. Bu durumu nasıl düzeltebilirim? Ad ile birlikte, bu gibi bir şey: soyad göstermek gerekiyor

<h1> Smith </h1>
<p> John, Samantha </p>

<h1> Spencer </h1>
<p> shawn </p>

CEVAP
11 EKİM 2012, PERŞEMBE


Bu varsaymak özelliğini devre dışı bırakarak yeni bir dict kopyala önleyebilirsinizdefaultdictekleme yeni değerleri bir kez yapılır:

new_data.default_factory = None

Açıklama

template variable resolution algorithm in Django kullanırken boş bir liste için çözümler new_data['items'] ilk olarak new_data.items çözmeye çalışacaktırdefaultdict(liste).

Boş bir liste için varsayılan devre dışı bırakmak ve Django new_data['items'] sonra başarısız devam çözünürlüğü new_data.items(), default_factory attribute of defaultdict arama için ayarlanabilir kadar çalışırYok.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011
  • Tom Megalis

    Tom Megalis

    18 NİSAN 2006