2010-09-04 52 views
2

我有一对夫妇让Django范本供回路标签要经过这个字典的问题:Django的“for”循环和Python字典问题

它肯定是被传递到页确定,如果我只是做:

{% for event in events %} 
    {{ event }} 
{% endfor %} 

写入1,2,3,但是当我尝试做{{event.start}}它只是没有做任何输出...

evs = { 

     "1": { 
      'start': '8:00:00', 
      'end': '9:00:00', 
      'name': 'test', 
      'description': 'test', 
      'image_url': 'http://test', 
      'channel_url': 'http://test', 
     }, 

     "2": { 
      'start': '8:00:00', 
      'end': '9:00:00', 
      'name': 'test', 
      'description': 'test', 
      'image_url': 'http://test', 
      'channel_url': 'http://test', 
     }, 

     "3": { 
      'start': '8:00:00', 
      'end': '9:00:00', 
      'name': 'test', 
      'description': 'test', 
      'image_url': 'http://test', 
      'channel_url': 'http://test', 
     } 

    } 

这是我的Django代码在模板中:

{% for event in events %} 
      {{ event.end }} 
      {{ event.name }} 
      {{ event.description }} 
      {{ event.image_url }} 
      {{ event.channel_url }} 
    {% endfor %} 

任何帮助将非常感激!

感谢

回答

6

如果你只是遍历events你只是遍历dictonary的钥匙;您需要遍历字典的值:{% for event in events.values %}

+0

非常感谢! – kron 2010-09-04 11:35:09

+1

@Ignacio:我不相信你的语法会起作用。它相当于事件['event']。start – 2010-09-04 11:54:08

5

那么,在你的情况下,event是一个条目(这是一个字符串)的关键,而不是对象本身,所以event.start无法正常工作。

看看documentation。你可以这样做:

{% for key, event in events.items %} 
     {{ event.end }} 
     {{ event.name }} 
     {{ event.description }} 
     {{ event.image_url }} 
     {{ event.channel_url }} 
{% endfor %} 
+2

如果事件是字典,则此语法不起作用。你需要{%键,事件在events.items%} – 2010-09-04 11:54:49

+0

@Ned Batchelder:真的......我只是复制和粘贴从OP中,但在文档中是正确的......对我来说是耻辱。谢谢! – 2010-09-04 12:34:21