对django Auth会不会修改你的数据库的结构有疑问?

它是django的一套权限机制,URL与权限相关,不同权限访问一个受保护的URL会产生不同反馈。初触django可能在django Auth方面碰到一些困难。

django Auth对数据库表的结构有何要求

entity.py

向Django描述数据表的结构,这个文件的文件名无限制,甚至不是单个文件也可以。

class Permission(Model):
    id = PositiveBigIntegerField(verbose_name='权限', primary_key=True)
    name = CharField(verbose_name='权限名', max_length=8, null=False)
    url = CharField(verbose_name='访问路径', max_length=64, null=False)

    class Meta:
        db_table = 'permission'


class Role(Model):
    id = PositiveSmallIntegerField(verbose_name='角色编号', primary_key=True)
    name = CharField(verbose_name='角色名', max_length=8, null=False)

    class Meta:
        db_table = 'role'


class RolePermission(Model):
    id = AutoField(verbose_name='流水号', primary_key=True)
    role_id = PositiveSmallIntegerField(verbose_name='角色编号', null=False)
    permission_id = PositiveIntegerField(verbose_name='权限', null=False)

    class Meta:
        unique_together = (("role_id", "permission_id"),)
        db_table = 'role_permission'


class RoleUser(Model):
    id = AutoField(verbose_name='流水号',  primary_key=True)
    role_id = PositiveSmallIntegerField(verbose_name='角色编号', null=False)
    user_id = PositiveBigIntegerField(verbose_name='账号', null=False)

    class Meta:
        unique_together = (("role_id", "user_id"),)
        db_table = 'role_user'


class User(Model):
    id = AutoField(verbose_name='账号', primary_key=True)
    password = CharField(verbose_name='密码', max_length=30, null=False)
    phone = CharField(verbose_name='手机号', null=False,
                      unique=True, max_length=15)
    lock = BooleanField(verbose_name='挂失标志', null=False, default=False)
    ... # 可以在这里写更多字段,按照需求设置字段

    class Meta:  # 指定表名
        db_table = 'user'

... # 更多表

settings.py
默认都已经设置好了,不需要修改。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ... # 自定义
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

DATABASES = {
    
    
    'default': {
    
    
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_demo',  # 自定义数据库名字
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '127.0.0.1',
        'POST': 3306,
    }
}
...

admin.py
配置文件之一,Django Admin中的表和自定义的表在这里联系起来。

from django.contrib import admin
from Demo.entity import User, Role, Permission


class RoleConfig(admin.ModelAdmin):
    """封装给定模型的所有管理选项和功能。
    """

    list_display = ['name', 'id']  # 设置列表可显示的字段
    list_filter = ['name', 'id', ]  # 设置过滤选项
    list_per_page = 5  # 每页显示条目数
    list_editable = ['name', ]  # 设置可编辑字段
    ordering = ['id', ]  # 按哪个字段排序
    search_fields = ['name', 'id']  # 查询索引
    list_display_links = ["id"]


class PermissionConfig(admin.ModelAdmin):
    list_display = ["id", "name", "url"]
	# 剩下的不写也行

admin.site.register(User)
admin.site.register(Role, RoleConfig)  # 在给定的管理类中注册给定的模型
admin.site.register(Permission, PermissionConfig)

然后在项目所在目录cmd控制台敲python manage.py createsuperuser,然后它提示我表未迁移:

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

然后又敲python manage.py migrate,Django自己给我建了一大堆表。
Django在自定义数据库中增加了许多表
不过这表挺详细的了。

おすすめ

転載: blog.csdn.net/dscn15848078969/article/details/117135738
おすすめ