html页面菜单栏如何控制权限,权限管理菜单展示

设计菜单管理问题:

c41bef4c8a98

图片.png

1.如何生成菜菜单

2.怎么让这些菜单分级显示并且如果当前访问的url权限默认

展开如果是组内菜单就加粗或者变红

3.非菜单url,默认选中原菜单。(如果你是点击用户列表进来的

那么你看到页面了,如果你点击添加的时候,你的那个用户列看不见了

这就不好了。所以要设计当你点击添加按钮的时候,那个用户列表被默认选中)

菜单管理

菜单一:

用户管理

权限管理

菜单二:

订单管理

角色管理

分级做了菜单。这些菜单该显示什么菜单?是当前用户登录之后从数据库拿到用户拥有的权限,然后把权限搞成菜单

在表里面设计了一个组内菜单(自关联),当menu_gp_id为NULL就代表可以作为菜单

c41bef4c8a98

图片.png

1.在models中添加Menu对象(表)以及和group建立起一对多的关系

from django.db import models

class Menu(models.Model):

"""

菜单组

"""

title = models.CharField(max_length=32)

class Group(models.Model):

"""

权限组

"""

caption = models.CharField(verbose_name='组名称',max_length=16)

menu = models.ForeignKey(verbose_name='所属菜单',to='Menu')

class Permission(models.Model):

"""

权限表

"""

title = models.CharField(verbose_name='标题',max_length=32)

url = models.CharField(verbose_name="含正则URL",max_length=64)

is_menu = models.BooleanField(verbose_name="是否是菜单")

code = models.CharField(verbose_name="代码",max_length=16)

group = models.ForeignKey(verbose_name='所属组',to="Group")

class Meta:

verbose_name_plural = "权限表"

def __str__(self):

return self.title

class User(models.Model):

"""

用户表

"""

username = models.CharField(verbose_name='用户名',max_length=32)

password = models.CharField(verbose_name='密码',max_length=64)

email = models.CharField(verbose_name='邮箱',max_length=32)

roles = models.ManyToManyField(verbose_name='具有的所有角色',to="Role",blank=True)

class Meta:

verbose_name_plural = "用户表"

def __str__(self):

return self.username

class Role(models.Model):

"""

角色表

"""

title = models.CharField(max_length=32)

permissions = models.ManyToManyField(verbose_name='具有的所有权限',to='Permission',blank=True)

class Meta:

verbose_name_plural = "角色表"

def __str__(self):

return self.title

models

2.初始化获取菜单信息+权限信息

from django.conf import settings

def init_permission(user,request):

"""

初始化权限信息,获取权限信息并放置到session中。

:param user:

:param request:

:return:

"""

permission_list = user.roles.values('permissions__title', # 用户列表

'permissions__url',

'permissions__code',

'permissions__is_menu', # 是否是菜单

'permissions__group_id',

'permissions__group__menu_id', # 菜单ID

'permissions__group__menu__title',# 菜单名称

).distinct()

menu_list = []

# 去掉不是菜单的URL

for item in permission_list:

if not item['permissions__is_menu']:

continue

tpl = {

'menu_id':item

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值