views.py
目的: 主要实现将用户所有的权限,按照级别关系显示到菜单上
from django.shortcuts import HttpResponse
from . import models
def login_test(request):
# 步骤一: 获取用户名
# 1.通过用户名获取该用户的所有角色
username = request.GET.get('u') # 获取用户名
# 步骤二 通过用户名获取所有角色列表
# 方式2.跨表操作: 跨两张表直接根据获取的用户名获取到该用户名下的所有角色 获取到角色列表
# <QuerySet [<Role: CEO>, <Role: 搬砖者>, <Role: 部门经理>]>
role_list = models.Role.objects.filter(user2role__u__username=username)
# 用户登录获取的两个值:第一个所有权限在 session 中放置
# 步骤三 根据角色列表,获取到用户所有的去重后的权限,放置在session中;
# 我们可以通过表关联以及反向关联,直接换获取到当前用户对应角色的所有的权限
# 通过该用户的角色列表,间接获取到该用户对应角色的所有权限
permission2action = models.Permission2Action.objects.\
filter(permission2action2role__r__in=role_list).\
values('p__url', 'a__code').distinct()
print(permission2action) # 这个 permission2action 暂时没用
# 用户登录获取的两个值:第二个 在菜单