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