权限介绍
# 1 写过权限类---》控制用户,是否有权限访问我们的接口
# 2 之前咱们直接定死,普通用户,超级用户,管理员 这种身份,给不同人设置不同权限
# 3 比如都是互联网用户:抖音 acl控制
-游客用户只能查看
-登陆用户可以查看和评论
-粉丝超过1000用户,开直播
# 4 公司内部 这些权限
-招员工
-发工资
-开发代码
-删除代码
-开董事会
-开除员工
---分部门:开放部门:开发代码,删除代码
---人力资源:招员工,开除员工
---财务部门:发工资
---董事会:开董事会
# 5 常见的权限控制方案
-1 acl :访问控制列表
-用户 :用户表
-权限 :权限表
-用户和权限中间表:是多对多:一个用户有多个权限,一个权限可能对应多个用户
-将用户直接与权限对接,每个用户有个权限列表
-2 RBAC:Role-Based Access Control,基于角色的访问控制
-将用户与角色(组,部门)对接,然后角色(组,部门)与对象的权限对接。
-3 ABAC:Attribute-Based Access Control,基于属性的访问控制
-4 PBAC:Policy-Based Access Control,基于策略的访问控制
# 6 作为python写的项目,一般是公司内部项目
-python 写rbac权限控制比较多
# 7 django--》大而全--》提供了一套可以基于rbac权限控制的 后台管理
-auth+admin:一套rbac权限控制
-基于他admin+auth-->快速开发出公司内部的项目
# 8 django中如何设计RBAC控制的--》通过6张表控制
-auth_user # 用户表
-auth_group # 角色表,组表,部门表
-auth_permission #权限表
-auth_user_group # 中间表:用户和角色多对多
-auth_grou_permission# 中间表:部门和权限
-多一个:为了更细粒度的区分权限:用户和权限多对多
-auth_user_permission
# 9 admin 权限演示
-django 的admin 有什么权限,是自己增加的,就是对表的增删查改权限
- 增加了个组[图书看-删-增组]:对图书有 查看,删除,增加权限
- 增加用户 :小满,属于--图书看-删-增组
is_staff: 1 # 工作人员状态,就是能不能登录到后台 1表示True 0表示False
is_active:1 # 是不是活跃用户,就是没有被冻结 1表示是活跃用户没有被锁定,0反之
is_superuser:0 # 不是超级用户
-root用户是超级管理员--》有所有权限
如何将模型层里面的表加入到admin后台
# 进入 admin.py
# 通过 admin.site.register(表名去新增即可)
from django.contrib import admin
from .models import *
admin.site.register(Book)
如何将django后台的这个名字改成中文的
- 进入模型层
- 点进去
AbstractUser
源码里面 ,修改verbose_name_plural
成中文名称即可。
class Meta:
verbose_name = _("user")
verbose_name_plural = _("users")
abstract = True
# 修改成中文
class Book(models.Model):
name = models.CharField(max_length=32, verbose_name="图书名称") # 这里也是后台字段显示成中文
price = models.IntegerField(verbose_name="图书价格")
publish = models.CharField(max_length=32, verbose_name="出版社")
class Meta:
db_table = "book" # 这里是修改写入到数据库的表名
verbose_name_plural = "图书" # 这里是修改后台站点管理的名称
如何将app01(即你自己的app名称)改成中文的
# 去你的app apps.py里面
# 添加verbose_name = 想要的名称即可
from django.apps import AppConfig
class App01Config(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "app01"
verbose_name = "图书管理" # 修改这个即可
增加组
组就是rbac里面的多对多第三张表
增加用户
修改对象在后台的显示效果
class Book(models.Model):
name = models.CharField(max_length=32, verbose_name="图书名称")
price = models.IntegerField(verbose_name="图书价格")
publish = models.CharField(max_length=32, verbose_name="出版社")
class Meta:
db_table = "book"
verbose_name_plural = "图书"
def __str__(self):
return self.name
simpleui的使用
https://github.com/newpanjing/simpleui
安装
pip install django-simpleui
使用
# 注册到app里面
INSTALLED_APPS = [
'simpleui', # 这个名称 不是别的 放第一个位置 不要忘记逗号
]
# 操作这步时,先新建好media文件夹,以及配置好路由
# 修改左上角的logo --> SIMPLEUI_LOGO = 'logo地址'
# 例如下面 这个地址可以是本地地址 也可以是网络地址 就是1:1的图片
SIMPLEUI_LOGO = "/media/img/backend-logo.jpg"
# 配置路由
from django.contrib.staticfiles.urls import static
from . import settings
urlpatterns = [
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
# ---------------------------------------------------------------------------
# 修改管理名称的后台和标题
# 需要去某appd admin.py 下面操作
admin.site.site_title = "小满三岁啦" # 这里同html中head中的title
admin.site.site_header = "小满三岁啦" # 这里修改的就是logo附近的标题
# 隐藏右侧SimpleUI广告链接和使用分析
SIMPLEUI_HOME_INFO = False
SIMPLEUI_ANALYSIS = False
# 隐藏最近的动作
SIMPLEUI_HOME_ACTION = False
更多使用也可以参考我之前的文章:https://www.cnblogs.com/ccsvip/p/18090687
jazzmin的使用
https://django-jazzmin.readthedocs.io
安装
使用
# 自行参考配置文件即可
JAZZMIN_SETTINGS = {
# 窗口标题(如果不存在或为None,则默认为current_admin_site.site_title)
"site_title": "图书馆管理",
# 登录界面标题(最多19个字符)(如果不存在或为None,则默认为current_admin_site.site_header)
"site_header": "图书馆",
# 品牌标题(最多19个字符)(如果不存在或为None,则默认为current_admin_site.site_header)
"site_brand": "图书馆",
# 站点标志,必须存在于静态文件中,用于左上角的品牌
"site_logo": "books/img/logo.png",
# 用于网站登录表单标志的标志,必须存在于静态文件中(默认为site_logo)
"login_logo": None,
# 用于深色主题登录表单的标志(默认为login_logo)
"login_logo_dark": None,
# 应用于上面标志的CSS类
"site_logo_classes": "img-circle",
# 相对路径到站点的favicon,如果不存在将默认为site_logo(理想情况下为32x32 px)
"site_icon": None,
# 登录界面上的欢迎文本
"welcome_sign": "欢迎来到图书馆",
# 页脚上的版权信息
"copyright": "Acme图书馆有限公司",
# 要从搜索栏中搜索的模型管理员列表,如果排除则省略搜索栏
# 如果要使用单个搜索字段,则不需要使用列表,可以使用简单字符串
"search_model": ["auth.User", "auth.Group"],
# 用户模型上包含头像ImageField/URLField/Charfield或接收用户的可调用函数的字段名称
"user_avatar": None,
############
# 顶部菜单 #
############
# 放置在顶部菜单上的链接
"topmenu_links": [
# 可反转的URL(可以添加权限)
{"name": "主页", "url": "admin:index", "permissions": ["auth.view_user"]},
# 在新窗口中打开的外部URL(可以添加权限)
{"name": "支持", "url": "https://github.com/farridav/django-jazzmin/issues", "new_window": True},
# 要链接到的模型管理员(根据模型检查权限)
{"model": "auth.User"},
# 带有下拉菜单的应用程序,链接到其所有模型页面(根据模型检查权限)
{"app": "books"},
],
#############
# 用户菜单 #
#############
# 包含在右上角用户菜单中的附加链接(不允许“app”url类型)
"usermenu_links": [
{"name": "支持", "url": "https://github.com/farridav/django-jazzmin/issues", "new_window": True},
{"model": "auth.user"}
],
#############
# 侧边栏 #
#############
# 是否显示侧边栏
"show_sidebar": True,
# 是否自动展开菜单
"navigation_expanded": True,
# 生成侧边栏菜单时隐藏这些应用程序,例如(auth)
"hide_apps": [],
# 生成侧边栏菜单时隐藏这些模型(例如auth.user)
"hide_models": [],
# 基于这些应用程序(和/或模型)的侧边栏菜单排序列表(不需要包含所有应用程序/模型)
"order_with_respect_to": ["auth", "books", "books.author", "books.book"],
# 要附加到应用程序组的自定义链接,按应用程序名称分类
"custom_links": {
"books": [{
"name": "制作消息",
"url": "make_messages",
"icon": "fas fa-comments",
"permissions": ["books.view_book"]
}]
},
# 侧边栏应用程序/模型的自定义图标,请参见https://fontawesome.com/icons?d=gallery&m=free&v=5.0.0,5.0.1,5.0.10,5.0.11,5.0.12,5.0.13,5.0.2,5.0.3,5.0.4,5.0.5,5.0.6,5.0.7,5.0.8,5.0.9,5.1.0,5.1.1,5.2.0,5.3.0,5.3.1,5.4.0,5.4.1,5.4.2,5.13.0,5.12.0,5.11.2,5.11.1,5.10.0,5.9.0,5.8.2,5.8.1,5.7.2,5.7.1,5.7.0,5.6.3,5.5.0,5.4.2
# 完整的5.13.0免费图标类别列表
"icons": {
"auth": "fas fa-users-cog",
"auth.user": "fas fa-user",
"auth.Group": "fas fa-users",
},
# 当未手动指定时使用的图标
"default_icon_parents": "fas fa-chevron-circle-right",
"default_icon_children": "fas fa-circle",
#################
# 相关模态框 #
#################
# 使用模态框而不是弹出窗口
"related_modal_active": False,
#############
# UI调整 #
#############
# 自定义CSS/JS脚本的相对路径(必须存在于静态文件中)
"custom_css": None,
"custom_js": None,
# 是否链接字体从fonts.googleapis.com(否则使用custom_css提供字体)
"use_google_fonts_cdn": True,
# 是否在侧边栏上显示UI定制器
"show_ui_builder": False,
###############
# 更改视图 #
###############
# 将更改视图呈现为单个表单还是选项卡,当前选项为
# - single
# - horizontal_tabs(默认)
# - vertical_tabs
# - collapsible
# - carousel
"changeform_format": "horizontal_tabs",
# 根据模型管理员基础覆盖更改表单
"changeform_format_overrides": {"auth.user": "collapsible", "auth.group": "vertical_tabs"},
# 在管理中添加语言下拉菜单
"language_chooser": True,
}
Grappelli的使用
https://django-grappelli.readthedocs.io/en/latest/quickstart.html
安装
pip3 install django-grappelli -i https://pypi.mirrors.ustc.edu.cn/simple/
使用
# 1. 注册APP 放在列表索引0的位置
INSTALLED_APPS = [
"grappelli", # 放这里
"django.contrib.admin",
# ...
]
# 2. 设置路由
urlpatterns = [
path('admin/', admin.site.urls),
path('grappelli/', include('grappelli.urls')) # 这个
]
# 3. 上下文管理器
TEMPLATES = [
{
...
'OPTIONS': {
'context_processors': [
...
+ 'django.template.context_processors.request', # 这个
],
},
},
]
# 4. 手机媒体文件
python manage.py collectstatic
# 5. 启动项目,完成
标签:name,admin,09,site,auth,django,权限,模板
From: https://www.cnblogs.com/ccsvip/p/18147775