zoukankan      html  css  js  c++  java
  • Django框架–权限表设计

    内容简介:models中创建类:五个类,七张表角色表和权限表是多对多的关系(一个角色可以有多个权限,一个权限可以对应多个角色);用户表和角色表是多对多的关系(一个用户可以有多个角色,一个角色有多个用户);

    一、设计表结构

    models中创建类:五个类,七张表

    • 角色表:
    • 用户表:
    • 权限表:
    • 权限组表:
    • 菜单表:

    角色表和权限表是多对多的关系(一个角色可以有多个权限,一个权限可以对应多个角色);

    用户表和角色表是多对多的关系(一个用户可以有多个角色,一个角色有多个用户);

    所以有会多生成两张关系表;

    一个菜单下面有多个组;

    一个组下面有多个菜单;

    一个菜单下面有多个权限;

    ###################权限部分
    
    class UserInfo(models.Model):       ##用户表
        name = models.CharField(max_length=16, blank=True, null=True, verbose_name="用户名")
        password = models.CharField(max_length=128, blank=True, null=True, verbose_name="密码")
        email = models.CharField(max_length=32, verbose_name="邮箱")
        userPosition = models.ForeignKey(to="Position", blank=True, null=True, verbose_name="职位", related_name="userposi")  # 用户和职位是一对多的关系
    
        def __str__(self):
            return self.name
    
        class Meta:
            verbose_name_plural = "用户表"
    
    
    class Position(models.Model):       ##职位表
        name = models.CharField(max_length=16, blank=True, null=True, verbose_name="职位名")
        auth = models.ManyToManyField(to='Auth', blank=True, null=True, verbose_name="权限", related_name="posauth")
    
        def __str__(self):
            return self.name
    
        class Meta:
            verbose_name_plural = "职位表"
    
    
    class Auth(models.Model):           ##权限表
        name = models.CharField(max_length=64, blank=True, null=True, verbose_name="显示路径名")
        url = models.CharField(max_length=64, blank=True, null=True, verbose_name="路径")
        groupauth = models.ForeignKey(to='AuthGroup', blank=True, null=True, verbose_name="组权限", related_name="authgroup")      #组和权限是一对多的关系,一个组有多个权限
    
    
        def __str__(self):
            return self.name
    
        class Meta:
            verbose_name_plural = "权限表"  

    三级权限表结构设计
    #角色表
    CREATE TABLE `sp_role` (
      `role_id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
      `role_name` varchar(20) NOT NULL COMMENT '角色名称',
      `ps_ids` varchar(512) NOT NULL DEFAULT '' COMMENT '权限ids,1,2,5',
      `ps_ca` text COMMENT '控制器-操作,控制器-操作,控制器-操作',
      `role_desc` text,
      PRIMARY KEY (`role_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8;
    
    #权限表
    DROP TABLE IF EXISTS `sp_permission`;
    CREATE TABLE `sp_permission` (
      `ps_id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
      `ps_name` varchar(20) NOT NULL COMMENT '权限名称',
      `ps_pid` smallint(6) unsigned NOT NULL COMMENT '父id',
      `ps_c` varchar(32) NOT NULL DEFAULT '' COMMENT '控制器',
      `ps_a` varchar(32) NOT NULL DEFAULT '' COMMENT '操作方法',
      `ps_level` enum('0','2','1') NOT NULL DEFAULT '0' COMMENT '权限等级',
      PRIMARY KEY (`ps_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=160 DEFAULT CHARSET=utf8 COMMENT='权限表';
    
    #用户表
    DROP TABLE IF EXISTS `sp_manager`;
    CREATE TABLE `sp_manager` (
      `mg_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
      `mg_name` varchar(32) NOT NULL COMMENT '名称',
      `mg_pwd` char(64) NOT NULL COMMENT '密码',
      `mg_time` int(10) unsigned NOT NULL COMMENT '注册时间',
      `role_id` tinyint(11) NOT NULL DEFAULT '0' COMMENT '角色id',
      `mg_mobile` varchar(32) DEFAULT NULL,
      `mg_email` varchar(64) DEFAULT NULL,
      `mg_state` tinyint(2) DEFAULT '1' COMMENT '1:表示启用 0:表示禁用',
      PRIMARY KEY (`mg_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=510 DEFAULT CHARSET=utf8 COMMENT='管理员表';
    
    #权限API
    CREATE TABLE `sp_permission_api` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `ps_id` int(11) NOT NULL,
      `ps_api_service` varchar(255) DEFAULT NULL,
      `ps_api_action` varchar(255) DEFAULT NULL,
      `ps_api_path` varchar(255) DEFAULT NULL,
      `ps_api_order` int(4) DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `ps_id` (`ps_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=60 DEFAULT CHARSET=utf8;
    

     用户表

    角色表


    权限表

     权限API表


    参考:https://www.codercto.com/a/56577.html




  • 相关阅读:
    学习进度笔记06
    学习进度笔记05
    学习进度笔记04
    学习进度笔记03
    学习进度笔记02
    周总结13
    周总结12
    周总结11
    人月神话阅读笔记3
    第一阶段冲刺10
  • 原文地址:https://www.cnblogs.com/weidaijie/p/12658482.html
Copyright © 2011-2022 走看看