如何使用Django创建动态菜单结构?

问题描述 投票:0回答:2

我想要一个带有菜单和子菜单的菜单结构,并且取决于 当前正在查看哪个页面,我想突出显示两个菜单中的项目。是 有没有提供此功能的模块或应用程序?如果没有,最好的方法是什么 解决问题?

django menu
2个回答
6
投票

快速谷歌搜索给出了这个:

https://github.com/jphalip/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
投票

根据djangopackages,2018 年最受欢迎的菜单应用程序是

django-sitetree

可以使用上面链接中的第二个工具django-activeurl来完成项目突出显示。

但是,对于大型站点,django-sitetree 可能存在性能问题。

还有另一种与菜单层次结构相关的方法:

modified preorder tree traversal
,它优化了树形查找的数据库查询。

使用 django-mptt 存储分层数据(例如具有无限深度的子菜单的菜单)。使用 django-mptt-admin 在管理菜单中轻松管理它们。

contenttypes
框架对于更通用的菜单可能很有用(这在 django-mptt 教程中没有显示)。

© www.soinside.com 2019 - 2024. All rights reserved.