问题:
在用户登录后,如何只显示出用户权限的菜单呢?
需要设置显示菜单权限

1.为了显示菜单,需要在models权限上添加is_menu(手动判断是否是查看)的icon(图标字符串)

在rbac中录入另一个的权限,判断是否显示菜单的,若是没有,返回一个空列表[],有则添加session中permission_menu_list=[{},{}]

 1 from rbac.models import Role
 2 
 3 
 4 def initial_sesson(user,request):
 5     """
 6     功能:将当前登录人的所有权限录入session中
 7     :param user: 当前登录人
 8     """
 9     # 查询当前登录人的所有权限列表
10     # 查看当前登录人的所有角色
11     # ret=Role.objects.filter(user=user)
12     permissions = Role.objects.filter(user=user).values("permissions__url",
13                                                         "permissions__is_menu",
14                                                         "permissions__title",
15                                                         "permissions__icon",
16                                                         ).distinct()
17     print(permissions)
18 
19     permission_list = []
20     permission_menu_list = []
21 
22     for item in permissions:
23         # 构建权限列表
24         permission_list.append(item["permissions__url"])
25 
26         # 构建菜单权限列表
27         if item["permissions__is_menu"]:
28             permission_menu_list.append({
29                 "title":item["permissions__title"],
30                 "icon":item["permissions__icon"],
31                 "url":item["permissions__url"],
32             })
33 
34     # 将当前登录人的权限列表注入session中
35     request.session["permission_list"] = permission_list
36     # 将当前登录人的菜单权限列表注入session中
37     print("permission_menu_list",permission_menu_list)
38     request.session["permission_menu_list"] = permission_menu_list

rbac