1、settings中定义基于中间件变量的字典
UNICOM_MENU = { 'leader': [ {'text': '用户管理', 'url': '/xx/xx/'}, {'text': '订单管理', 'url': '/xx/xx/'}, {'text': '工单管理', 'url': '/xx/xx/'}, ], 'user': [ {'text': '用户管理', 'url': '/xx/xx/'}, {'text': '订单管理', 'url': '/xx/xx/'}, ] }
1.1中间件
1 from django.utils.deprecation import MiddlewareMixin 2 from django.shortcuts import redirect 3 class AuthMiddleware(MiddlewareMixin): 4 def process_request(self, request): 5 # 0.无需登录的地址,放行 6 if request.path_info == "/login/": 7 return 8 9 # 1.获取用户session信息 10 # {"id": admin_object.id, 'username': admin_object.username} 11 user_info = request.session.get("user_info") 12 13 # 2.有值,表示已登录,则继续 14 if user_info: 15 request.unicom_id = user_info['id'] 16 request.unicom_username = user_info['username'] 17 request.unicom_role = user_info['role'] 18 return 19 20 # 3.无值=None 21 return redirect('/login/')
2、已注册app中创建templatetags目录
-
创建一个文件(任意命名)
-
编写如下代码
-
from django.template import Library from django.conf import settings register = Library() @register.inclusion_tag('menu.html') def unicom_menu(request): role = request.unicom_role menu_list = settings.UNICOM_MENU[role] return {'menu_list': menu_list}
3、templates中创建menu.html并编写如下内容
{% for menu in menu_list %} <li><a href="{{ menu.url }}">{{ menu.text }}</a></li> {% endfor %}
4、前段页面调用
{% load menu %} {% unicom_menu request %}
标签:info,菜单,menu,request,django,xx,user,text,页面 From: https://www.cnblogs.com/zhuangjoo/p/17427938.html