Django权限管理测试
测试内容:当我单击登录页面登录的时候页面会弹出当前用户的个人信息
当我点击提交的时候可以看到我当前用户的所有权限:
测试成功,接下来看一下后台的简单代码:

class User(models.Model): ''' 用户信息表,与角色多对多(role) ''' username = models.CharField(max_length=32,verbose_name="用户名") password = models.CharField(max_length=32,verbose_name="密码") email = models.CharField(max_length=32,verbose_name="邮箱") roles = models.ManyToManyField(to="Role",related_name="user_role",verbose_name="具有的角色",blank=True) class Meta: verbose_name_plural = "用户表" def __str__(self): return self.username class Role(models.Model): ''' 角色表,和权限表多对多(permission) ''' title = models.CharField(max_length=32,verbose_name="角色名") permission = models.ManyToManyField(to="Permission",verbose_name="具有的所有权限",related_name="role_permission",blank=True) class Meta: verbose_name_plural = "角色表" def __str__(self): return self.title class Permission(models.Model): ''' 权限表,与用户信息表多对多(User) ''' url = models.CharField(max_length=32,verbose_name="含正则的URL") title = models.CharField(max_length=32,verbose_name="标题") is_menu = models.BooleanField(verbose_name="是否是菜单") class Meta: verbose_name = "权限表" def __str__(self): return self.title

from django.shortcuts import render,HttpResponse,redirect from . import models # Create your views here. def login(request): if request.method == 'GET': return render(request,"login.html") else: username = request.POST.get("username") password = request.POST.get("password") user = models.User.objects.filter(username=username,password=password).first() #获得当前用户的名字 role_list = user.roles.all().values_list("title") #通过user的外键获取到当前用户的角色 permission_list = user.roles.values_list("permission__title").distinct() #通过双下划线查找到权限,必须去重,否则会重复 if user: return render(request,"index.html",locals()) else: return HttpResponse("滚你大爷的蛋蛋...")
前端页面就不看了,测试效果如上,每个用户登录之后都可以看到他的角色和相应的权限
本文来自博客园,作者:一石数字欠我15w!!!,转载请注明原文链接:https://www.cnblogs.com/52-qq/p/7799829.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)