Python “Django模板”;“用于循环”;工作不正常
我正在尝试构建模板标记,使用Python “Django模板”;“用于循环”;工作不正常,python,django,dictionary,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 %} {{menu.start.
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 %}
{{menu.start.caption}
工作正常,但是在我的for循环中,菜单项只包含'keywords'
或'start'
或'flipa'
,使用
根本不起作用
有人知道我做错了什么吗?
免责声明:我只使用django和python一周了 在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 %}
{%用于键,menu.items%中的值]
{%endfor%}
(虽然我意识到您实际上并没有在这里使用键,所以您可以在menu.values中对value使用)
另外,请注意,字典在任何情况下都可能不是适合您的项目的容器,因为您无法定义排序。正如armonge所建议的,列表可能更好。你需要的是让菜单成为列表而不是字典
上下文['menu']=[{'url':'#','caption':'test'},{'url':'#','caption':'test'},{'url':'#','caption':'test'}]在这种情况下如何使用列表?仅仅将上下文更改为列表而不是字典是行不通的。我不相信列表有items或values函数?有了列表,你只需对其进行迭代即可:对于菜单中的item
。这不起作用,可能是因为列表实际上是使用getattr从settings.py检索的?不管怎样,我是个可怕的白痴。(我只是把所有的东西都放在一个列表项中)谢谢你的建议使用列表。
{% for key, value in menu.items %}
<li class="single-link"><a href="{{ value.url }}" title="{{ value.caption }}">{{ value.caption }}</a></li>
{% endfor %}