Django:多个菜单

Django:多个菜单,django,menu,Django,Menu,我的django网站将有3个独立的菜单。第一个项目是:联系、关于、披露。第二个将有:条款和条件,隐私政策,版权。主菜单的项目有:主页、链接1、链接2、链接2。。。。前两个菜单将有固定项,最后一个菜单的项可能会更改。我将在模板中使用forloop,创建这些菜单的最佳方法是什么。网页只有标题和内容。我喜欢使用动态菜单 在my app/templatetags/myappmenu.py中,我有如下内容: from django import template register = template.L

我的django网站将有3个独立的菜单。第一个项目是:联系、关于、披露。第二个将有:条款和条件,隐私政策,版权。主菜单的项目有:主页、链接1、链接2、链接2。。。。前两个菜单将有固定项,最后一个菜单的项可能会更改。我将在模板中使用forloop,创建这些菜单的最佳方法是什么。网页只有标题和内容。

我喜欢使用动态菜单

my app/templatetags/myappmenu.py
中,我有如下内容:

from django import template
register = template.Library()
@register.inclusion_tag('my-app/menu.html')
def myappmenu():
    return [("label1", "link1"), ("label2", "link2")]
然后,在模板中,您可以循环项目,并以所需的格式生成菜单(
,等等)


如果需要有条件地显示菜单中的项目,可以通过检查模板标记中的权限将其添加到列表中;只需将请求或用户对象作为参数传递给模板标记函数。

您可以保持干燥,只需使用。它还支持嵌套菜单

安装:

pip install django-menuware
# Add `menuware` to your settings.py**
# Add `MENUWARE_MENU` to your settings.py:**
MENUWARE_MENU = {
    "RIGHT_NAV_MENU": [
        {   # Show `Login` to `unauthenticated` users ONLY
            "name": "Login",
            "url": "/login/",
            "render_for_unauthenticated": True,
        },
        {   # Show `Logout` to `authenticated` users ONLY
            "name": "Logout",
            "url": "/logout/",
            "render_for_authenticated": True,
        },
        {   # Show `Search` to all users
            "name": "Search",
            "url": "/search/",
            "render_for_unauthenticated": True,
            "render_for_authenticated": True,
        },
    ],
    "LEFT_NAV_MENU": [
        {   # Show `Admin` to `superuser` ONLY
            "name": "Admin",
            "url": "admin:index", # Reversible
            "render_for_authenticated": True,
            "render_for_superuser": True,
        },
       {   # Show `Comment Admin` to `staff` users ONLY
            "name": "Comment Admin",
            "url": "/review/admin/",
            "render_for_authenticated": True,
            "render_for_staff": True,
        },
    ]
<!-- base.html -->
{% load menuware %}

<!DOCTYPE html>
<html>
    <head><title>Django Menuware</title></head>
    <body>
        <!-- NAV BAR Start -->
        {% get_menu "LEFT_NAV_MENU" as left_menu %}
        <div style="float:left;">
            {% for item in left_menu %}
                <li class="{% if item.selected %} active {% endif %}">
                    <a href="{{item.url}}">{{item.name}}</a>
                </li>
            {% endfor %}
        </div>

        {% get_menu "RIGHT_NAV_MENU" as right_menu %}
        <div style="float:right;">
            {% for item in right_menu %}
                <li class="{% if item.selected %} active {% endif %}">
                    <a href="{{item.url}}">{{item.name}}</a>
                </li>
            {% endfor %}
        </div>
        <!-- NAV BAR End -->
    </body>
</html>
设置:

pip install django-menuware
# Add `menuware` to your settings.py**
# Add `MENUWARE_MENU` to your settings.py:**
MENUWARE_MENU = {
    "RIGHT_NAV_MENU": [
        {   # Show `Login` to `unauthenticated` users ONLY
            "name": "Login",
            "url": "/login/",
            "render_for_unauthenticated": True,
        },
        {   # Show `Logout` to `authenticated` users ONLY
            "name": "Logout",
            "url": "/logout/",
            "render_for_authenticated": True,
        },
        {   # Show `Search` to all users
            "name": "Search",
            "url": "/search/",
            "render_for_unauthenticated": True,
            "render_for_authenticated": True,
        },
    ],
    "LEFT_NAV_MENU": [
        {   # Show `Admin` to `superuser` ONLY
            "name": "Admin",
            "url": "admin:index", # Reversible
            "render_for_authenticated": True,
            "render_for_superuser": True,
        },
       {   # Show `Comment Admin` to `staff` users ONLY
            "name": "Comment Admin",
            "url": "/review/admin/",
            "render_for_authenticated": True,
            "render_for_staff": True,
        },
    ]
<!-- base.html -->
{% load menuware %}

<!DOCTYPE html>
<html>
    <head><title>Django Menuware</title></head>
    <body>
        <!-- NAV BAR Start -->
        {% get_menu "LEFT_NAV_MENU" as left_menu %}
        <div style="float:left;">
            {% for item in left_menu %}
                <li class="{% if item.selected %} active {% endif %}">
                    <a href="{{item.url}}">{{item.name}}</a>
                </li>
            {% endfor %}
        </div>

        {% get_menu "RIGHT_NAV_MENU" as right_menu %}
        <div style="float:right;">
            {% for item in right_menu %}
                <li class="{% if item.selected %} active {% endif %}">
                    <a href="{{item.url}}">{{item.name}}</a>
                </li>
            {% endfor %}
        </div>
        <!-- NAV BAR End -->
    </body>
</html>
用法:

pip install django-menuware
# Add `menuware` to your settings.py**
# Add `MENUWARE_MENU` to your settings.py:**
MENUWARE_MENU = {
    "RIGHT_NAV_MENU": [
        {   # Show `Login` to `unauthenticated` users ONLY
            "name": "Login",
            "url": "/login/",
            "render_for_unauthenticated": True,
        },
        {   # Show `Logout` to `authenticated` users ONLY
            "name": "Logout",
            "url": "/logout/",
            "render_for_authenticated": True,
        },
        {   # Show `Search` to all users
            "name": "Search",
            "url": "/search/",
            "render_for_unauthenticated": True,
            "render_for_authenticated": True,
        },
    ],
    "LEFT_NAV_MENU": [
        {   # Show `Admin` to `superuser` ONLY
            "name": "Admin",
            "url": "admin:index", # Reversible
            "render_for_authenticated": True,
            "render_for_superuser": True,
        },
       {   # Show `Comment Admin` to `staff` users ONLY
            "name": "Comment Admin",
            "url": "/review/admin/",
            "render_for_authenticated": True,
            "render_for_staff": True,
        },
    ]
<!-- base.html -->
{% load menuware %}

<!DOCTYPE html>
<html>
    <head><title>Django Menuware</title></head>
    <body>
        <!-- NAV BAR Start -->
        {% get_menu "LEFT_NAV_MENU" as left_menu %}
        <div style="float:left;">
            {% for item in left_menu %}
                <li class="{% if item.selected %} active {% endif %}">
                    <a href="{{item.url}}">{{item.name}}</a>
                </li>
            {% endfor %}
        </div>

        {% get_menu "RIGHT_NAV_MENU" as right_menu %}
        <div style="float:right;">
            {% for item in right_menu %}
                <li class="{% if item.selected %} active {% endif %}">
                    <a href="{{item.url}}">{{item.name}}</a>
                </li>
            {% endfor %}
        </div>
        <!-- NAV BAR End -->
    </body>
</html>

{%load menuware%}
Django Menuware
{%get_menu“LEFT_NAV_menu”作为LEFT_menu%}
{左_菜单%中项目的百分比}
  • {%endfor%} {%get_menu“RIGHT_NAV_menu”作为RIGHT_menu%} {右菜单%中项目的%
  • {%endfor%}

    至少,在滚动自己的Github页面之前,您需要先查看它的Github页面。

    作为旁注:这使得定义多个菜单变得非常容易:只需为每个菜单创建一个模板标记。