我正在尝试构建模板标签,使用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 %}
传递给此标记的上下文包含
context['menu'] = {'keywords': {'url': '#', 'caption': 'test'}, 'start': {'url': '#', 'caption': 'test'}, 'flippa': {'url': '#', 'caption': 'test'}}
{{ menu.start.caption }}
工作正常,但在我的for循环中,menu_item
只包含'keywords'
或'start'
或'flippa'
并使用.
完全不起作用。
任何人都知道我在这里做错了吗?
免责声明:我一直只使用django和python一周!
答案 0 :(得分:6)
在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 %}
(虽然我发现你实际上并没有在这里使用密钥,所以你可以使用for value in menu.values
)。
另外,请注意,在任何情况下,字典可能都不是您项目的正确容器,因为您无法定义排序。正如armonge所说,列表可能更好。
答案 1 :(得分:1)
您需要的是让您的菜单成为列表而不是字典
context ['menu'] = [{'url':'#','caption':'test'},{'url':'#','caption':'test'},{'url ':'#','caption':'test'}]