我想要一个带菜单和子菜单的菜单结构,具体取决于 当前查看的页面,我想突出显示两个菜单中的项目。是 有没有提供此功能的模块或应用程序?如果没有,那将是最好的方式 解决问题?
答案 0 :(得分:6)
快速谷歌搜索提供了这个:
http://code.google.com/p/django-treemenus/
http://code.google.com/p/django-menuse/
您也可以手动创建这样的简单菜单,只需传递到菜单项的模板列表,活动菜单和活动菜单以及活动子菜单项的子菜单项列表:
<ul>
{% for item in menu_items %}
<li>
{% if item.id == active_menu_item %}
<span class="active-menu-item">{{ item }}</span>
<ul>
{# Similar code for submenu items #}
</ul>
{% else %}
<a class="inactive-menu-item" href="{{ item.url }}">{{ item }}</a>
{% endif %}
</li>
{% endfor %}
</ul>
答案 1 :(得分:0)
根据djangopackages,2018年最受欢迎的菜单应用是django-sitetree
。
可以使用上面链接中的第二个工具django-activeurl来突出显示项目。
但是,对于大型站点,django-sitetree可能存在performance问题。
还有另一种与菜单的层次结构有关的方法:modified preorder tree traversal
,它可以优化数据库查询以查找树。
使用django-mptt存储层次结构数据(例如具有无限深度子菜单的菜单)。使用django-mptt-admin在管理菜单中轻松管理它们。 contenttypes
框架可能对于更通用的菜单很有用(django-mptt教程中未显示)。