Django "for" 循环和 Python 字典问题

2 投票
2 回答
2935 浏览
提问于 2025-04-16 03:42

我在使用Django的模板循环标签遍历这个字典时遇到了一些问题:

这个字典确实已经成功传递到页面上,因为如果我只做:

{% 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 %}

任何帮助都会非常感激!

谢谢

2 个回答

5

在你的情况下,event始终是一个条目的关键字(也就是一个字符串),而不是对象本身,所以event.start是无法使用的。

可以看看这个文档。你可以这样做:

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

如果你只是遍历 events,那么你其实是在遍历字典的键;你需要遍历字典的值:{% for event in events.values %}

撰写回答