Django模板"for循环"无法正常工作

Kin*_*Kin 2 python django dictionary

我正在尝试构建模板标签,使用字典settings.py来构建菜单.

我将此作为模板的一部分.

{% for menu_item in menu %}
     <li class="single-link"><a href="{{ menu_item.url }}" title="{{ menu_item.caption }}">{{ menu_item.caption }}</a></li>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

传递给此标记的上下文包含

context['menu'] = {'keywords': {'url': '#', 'caption': 'test'}, 'start': {'url': '#', 'caption': 'test'}, 'flippa': {'url': '#', 'caption': 'test'}}
Run Code Online (Sandbox Code Playgroud)

{{ menu.start.caption }}工作正常,但在我的for循环中,menu_item只包含just 'keywords''start'or 'flippa'和using .根本不起作用.

谁知道我在做错了什么?

免责声明:我一直只使用django和python一周!

Dan*_*man 7

在Django模板中,就像在标准Python中一样,for在字典上使用只是遍历键.你需要使用这个.items()方法:

{% for key, value in menu.items %}
    <li class="single-link"><a href="{{ value.url }}" title="{{ value.caption }}">{{ value.caption }}</a></li>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

(虽然我发现你实际上并没有在这里使用密钥,所以你可以使用它for value in menu.values).

另请注意,在任何情况下,字典可能都不是您项目的正确容器,因为您无法定义排序.正如armonge所说,列表可能更好.