Django框架–权限表设计

栏目: Python · 发布时间: 7年前

内容简介: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 = "权限表"


class AuthGroup(models.Model):      ##权限组表
    name = models.CharField(max_length=16, blank=True, null=True, verbose_name="权限组名")
    menu = models.ForeignKey(to='Menu', blank=True, null=True, verbose_name="菜单", related_name='groupmenu')     #一个组下有多个菜单

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "权限组表"


class Menu(models.Model):       ##菜单表
    name = models.CharField(max_length=16, blank=True, null=True, verbose_name="菜单名")

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "菜单表"

1.1、创建表:

python manage.py makemigrations

python manage.py migrate

1.2、注册表:

admin.py

from django.contrib import admin
from host import models


admin.site.register(models.UserInfo)
admin.site.register(models.Position)
admin.site.register(models.Auth)
admin.site.register(models.AuthGroup)
admin.site.register(models.Menu)

二、登录后台:

Django框架–权限表设计

2.1、设计路径:

urls:[
     "user/list.html",
     "user/add.html"/,
      "user/(\d+)/update.html",
     "user/(\d+)/del.html",
   ]

2.2、 对应的urls.py

urlpatterns = [
    url(r'user/list.html$', views.List.as_view()),
    url(r'user/add.html$', views.Add.as_view()),
    url(r'user/(\d+)/update.html', views.Update.as_view()),        ##(\d+)   用来匹配不同表单的id
    url(r'user/(\d+)/del.html', views.Del.as_view()),
]

2.3、对应的权限表:

Django框架–权限表设计


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

图解网络硬件

图解网络硬件

[日] 三轮贤一 / 盛荣 / 人民邮电出版社 / 2014-7 / 69.00元

本书详细介绍了计算机网络硬件的相关知识,在对硬件设备、相关技术及规范进行详尽考据和整理的同时,侧重工程实践,重点讲述了在实际网络建设工程中真实使用的网络硬件设备及其相关背景知识,能够帮助读者深入理解计算机网络在工程实践中某些容易混淆的概念,如L3交换机和路由器等。 本书在讲解的同时,还辅以丰富的图例,使计算机网络设备的真实情况一目了然,同时深入浅出地介绍了原本复杂抽象的计算机网络术语,因此对......一起来看看 《图解网络硬件》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具