美文网首页
取出权限url

取出权限url

作者: 两点半的杂货铺 | 来源:发表于2018-03-20 14:43 被阅读46次

    一、思路

    • 建议保存在session中

    • models.表,取出的就是相应表的对象
    • 把权限都存在session中,也就将url都存入session
    • 权限和url是多对多,一个人有多个权限的时候,他们的url也容易出现交集所以要去重
    • 获取权限url第一步,获取用户对应权限

    • 第一种方法获取用户名再去多对多表获取所有表的内容,在进一步取值

        username = request.GET.get('u')
        user = models.userinfo.objects.filter(username=username)
        # 通过用户id或者用户名,获取用户和权限的多对多 对象
        #obg_ru = models.User2Role.objects.filter(u=user)#['User2Role',User2Role]
    
    
    • 第二种方法要获取权限,我们直接去权限表查
     username = request.GET.get('u')
     user = models.userinfo.objects.filter(username=username)
     #利用modles.那个表就是查那个表的原则
     #obj_Role = models.Role.objects.filter(user2role__u = user)
    
    • 第三种方法就是第二种的升级版本,不用去查userinfo表
    #一条语句,查多对多表的user键查username
    obj_Role = models.Role.objects.filter(user2role__u__username=username)
    print(obj_Role)
    
    • 第二步获取权限对应的url

    • 第一种不推荐
    #查完权限,查权限对应的操作,权限可能有很多所以用in
    models.Url2Action2Role.objects.filter(r__in=obj_Role)#['Url2Action2Role','Url2Action2Role]
    
    • 第二种一定用in去查所有权限内
     #利用权限去查网址和增删改查的表
        obj_url2action = models.Url2Action.objects.\
            filter(url2action2role__r__in=obj_Role).\
            values('url__url','a__code').distinct()
        print(obj_url2action)
    

    二、完美写法

    def menu(request):
        # 第一种方法
        username = request.GET.get('u')
        obj_Role = models.Role.objects.filter(user2role__u__username=username)
        obj_url2action = models.Url2Action.objects.\
            filter(url2action2role__r__in=obj_Role).\
            values('url__url','a__code').distinct()
        print(obj_url2action)
        return render(request,'menu.html')
    
    

    相关文章

      网友评论

          本文标题:取出权限url

          本文链接:https://www.haomeiwen.com/subject/ptoofftx.html