请教Django的User/Group/Permission管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教Django的User/Group/Permission管理相关的知识,希望对你有一定的参考价值。
参考技术A Django的用户权限体系是一个比较正规的RBAC(基于角色的访问控制)模型的实现。用户不能不能访问某个view,由其拥有的role角色判断,其拥有的角色由其用户自身拥有的角色集合+其所在的组拥有的角色集合的并集所决定。更详细的可以查查RBAC这个模型的说明。Django 后台管理xadmin
一. xadmin的使用
后台管理在开发中可以给我们提供很大的便利,django自带了一个后台管理admin,不过还有一个xadmin比django自带的好用一些,功能更加强大,为模型提供了版本控制,可以回滚数据。django中权限主要靠六表实现,首先是基础的user、group、permission三表,然后分别是user与group的多对多关系表、group与permission的多对多关系表,最后django特有的user与permission的多对多关系表。django基于用户user、组group、权限permission三张表的关系,一共六张表来实现权限管理。
xadmin里面提供了权限的管理,而且使用很简单。
1.1 xadmin的使用流程
1. 安装xadmin
因为xadmin是基于Pillow模块的,所以需要先安装Pillow模块:
# 安装Pillow模块 pip install Pillow # 安装xadmin第一种方式 pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2 # 安装xadmin第二种方式 pip install xadmin
1.2 在配置的APP中注册xadmin
INSTALLED_APPS = [ # ... # xamin主体模块 ‘xadmin‘, # 渲染表格模块 ‘crispy_forms‘, # 为模型通过版本控制,可以回滚数据 ‘reversion‘, ]
1.3 xadmin数据库迁移
因为xadmin是有自己的数据库模型类的,所以需要进行数据库迁移操作。
python manage.py makemigrations
python manage.py migrate
1.4 在主路由中替换掉admin
# xadmin的依赖 import xadmin xadmin.autodiscover() # xversion模块自动注册需要版本控制的 Model from xadmin.plugins import xversion xversion.register_models() urlpatterns = [ # 将原本的admin路由改成以下方式即可 path(r‘xadmin/‘, xadmin.site.urls), ]
1.5 创建超级用户
# 在项目根目录下的终端 python manage.py createsuperuser # 账号密码设置(随意设置):admin | admin
1.6
# xadmin全局配置 import xadmin from xadmin import views class GlobalSettings(object): """xadmin的全局配置""" site_title = "海贼学城" # 设置站点标题 site_footer = "海贼王有限公司" # 设置站点的页脚 menu_style = "accordion" # 设置菜单折叠 xadmin.site.register(views.CommAdminView, GlobalSettings)
配置前:
利用以上配置后,在项目的配置文件中修改时区与语言设置如下:
# 将英文改为中文 LANGUAGE_CODE = ‘zh-hans‘ # 设定时区 TIME_ZONE = ‘Asia/Shanghai‘ USE_I18N = True USE_L10N = True USE_TZ = True
最终显示如下:
1.7 在adminx.py中注册model
from . import models # 注册 xadmin.site.register(models.模型表名)
同时模型表中字段可以增加verbose_name属性,表示后台管理时显示的名字。
1.8
# APP下的__init__.py default_app_config = "home.apps.HomeConfig" # APP下的apps.py from django.apps import AppConfig class HomeConfig(AppConfig): name = ‘home‘ verbose_name = ‘我的首页‘
以上是关于请教Django的User/Group/Permission管理的主要内容,如果未能解决你的问题,请参考以下文章