장고 프레임 워크 - 권한 테이블 디자인

설명 : 클래스 모델을 만들기 : 오 개 클래스, 일곱 명 테이블의 역할 및 권한 테이블이 테이블 많은 관계 (캐릭터, 권한이 여러 역할에 해당 할 수있는 여러 권한을 가질 수)이며, 사용자 및 역할 테이블이 있습니다 많은 관계 (사용자가 여러 역할, 역할 여러 사용자를 가질 수있다);

첫째, 디자인 테이블 구조

클래스에서 모델을 만들기 클래스 다섯, 일곱 테이블

  • 역할 테이블 :
  • 사용자 테이블 :
  • 권한 테이블 :
  • 권한 그룹 테이블 :
  • 메뉴 테이블 :

표 역할 및 권한 테이블 (캐릭터가 허가 문자의 복수에 대응할 수있다 특권의 복수를 할 수 있습니다) 많은 관계이다;

사용자 및 역할 테이블 많은 관계 (사용자가 사용자의 복수의 역할을 여러 역할을 가질 수있다)이다;

그래서 두 테이블 사이의 관계를 생성하기 위해 더있을 것이다;

아래의 메뉴 그룹들;

아래의 메뉴 그룹들;

더 많은 권한 아래 메뉴;

################### 권한 섹션 

클래스 사용자 정보 (models.Model) : ## 사용자 테이블 
    이름 = models.CharField (MAX_LENGTH = 16, 빈 = 사실, 널 (null) = TRUE , verbose_name = "사용자 이름") 
    암호 = models.CharField (MAX_LENGTH = 128, 빈 = 사실, 널 (null) = 사실, verbose_name = "암호") 
    이메일 = models.CharField에서 (= 32 MAX_LENGTH, verbose_name = "사서함") 
    userPosition = models.ForeignKey (에 = "위치", 빈 = 사실, 널 (null) = 사실, verbose_name = " 게시물", related_name = "userposi") #의 사용자와 게시물 많은 관계 

    DEF의 __str __ (자동) : 
        리턴 self.name 

    메타 - 클래스 : 
        verbose_name_plural = "사용자 테이블" 


클래스 위치 (models.Model) : 테이블 ## 위치  
    명 = models.CharField (MAX_LENGTH = 16, 빈 = 사실, 널 (null) = 사실,verbose_name = "위치 이름")
    인증 = models.ManyToManyField (= '인증에 '빈 = 사실, 널 (null) = 사실,verbose_name = "权限", related_name = "posauth")
 
    : DEF __str __ (자기) 
        반환 self.name의 

    클래스 메타 : 
        verbose_name_plural = "테이블 위치 " 


클래스 [인증 (models.Model) : ## 권한 테이블 
    이름 = models.CharField (MAX_LENGTH = 64, 빈 = 사실 = 사실, verbose_name = 널 (null)" 경로 이름 ") 
    URL = models.CharField (= 64 MAX_LENGTH, 빈 = 사실, 널 (null) = 사실, verbose_name = " 경로") 
    = 'authgroup'에 groupauth = models.ForeignKey (빈 = 사실, 널 (null) = 사실, verbose_name = " 그룹 권한", related_name = "authgroup") # 및 그룹 권한 그것은 많은 관계로 하나, 그룹 더 많은 권한 


    DEF __str __ (자동) : 
        리턴 self.name의 

    클래스 메타 :
        verbose_name_plural = "허가서"  

세 가지 권한 테이블 디자인
테이블 # 역할 
(가) 표 sp_role`을 CREATE`( 
  `role_id`이 (가) AUTO_INCREMENT NOT NULL, 부호없는 (. 6) smallint로 
  VARCHAR (20 인 role_name``) 주석을 NOT NULL '역할 이름', 
  'ps_ids` VARCHAR (512)에 NOT NULL 기본' '주석' 권한 IDS, 1, 2,5 ', 
  '주석 텍스트 ps_ca` '컨트롤러 - 동작 제어기 - 동작 제어기 - 연산' 
  'role_desc` 텍스트, 
  기본 키 (`role_id`) 
) = ENGINE InnoDB의 AUTO_INCREMENT를 = 함께 default CHARSET = UTF8 (42)이다; 

# 권한 테이블 
드롭 테이블 '은 IF가 존재 sp_permission`, 
(가) (테이블 sp_permission``을 만듭니다 
  . ps_id` SMALLINT`(6) 부호없는 AUTO_INCREMENT NOT NULL, 
  `ps_name` VARCHAR (20)가 COMMENT 인 NOT NULL'특권 이름 ' 
  `ps_pid` SMALLINT (6) 부호없는 NOT NULL 주석 ' 부모 ID', 
  'ps_c` VARCHAR (32)를 NOT NULL 기본''메모'제어기 '
  `ps_a` VARCHAR (32) NOT NULL의 DEFAULT 'COMMENT' 동작 ' 
  'ps_level` ENUM ( '0', '2'. '1')를 NOT NULL 기본 '0'메모 '인가 레벨', 
  기본 키 ( ps_id`이`) 
) (160) 엔진 = = InnoDB의 AUTO_INCREMENT을 기본 문자 집합 = UTF8 주석은 = '권한 테이블'; 

# 사용자 테이블 
드롭 tABLE`는 IF를 sp_manager` 존재, 
(가) 테이블 sp_manager`을 CREATE`( 
  `mg_id` 지능 (11)가 NOT NULL을 AUTO_INCREMENT 주석을. '기본 키 ID', 
  'mg_name` VARCHAR (32)를 NOT NULL'이름 '메모 
  'mg_pwd` 숯 (64)을 주석 처리 NOT NULL '암호' 
  등록일`mg_time` INT (10)가 주석에게 NOT NULL 부호없는 '을 
  ' role_id` TINYINT (11) NOT NULL DEFAULT '0'COMMENT ' 역할 ID', 
  `mg_mobile` VARCHAR (32) 디폴트의 NULL,
  `mg_email` VARCHAR (64) 초기 NULL,
  `mg_state` TINYINT (2) DEFAULT '1'설명] 1 :表示启用0表示禁用' 
  PRIMARY KEY (`mg_id`) 
) ENGINE = 이노 AUTO_INCREMENT = 510 = DEFAULT CHARSET UTF8 COMMENT ='管理员表'; 

#权限API는 
TABLE`sp_permission_api`을 (CREATE 
  `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)의 NULL DEFAULT, 
  `ps_api_order` INT (4) 초기 NULL, 
  PRIMARY KEY (`id`) 
  KEY`ps_id` (`ps_id`) 
) ENGINE = 이노 AUTO_INCREMENT = 60 = DEFAULT CHARSET UTF8;

 사용자 테이블

 

 

역할 테이블

 


권한 테이블

 

 권한 API 테이블

 

 


참조 : https://www.codercto.com/a/56577.html




추천

출처www.cnblogs.com/weidaijie/p/12658482.html