首页 > 其他分享 >09-权限介绍和后台模板的使用

09-权限介绍和后台模板的使用

时间:2024-04-20 15:55:34浏览次数:26  
标签:name admin 09 site auth django 权限 模板

权限介绍

# 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后台的这个名字改成中文的

  1. 进入模型层
  2. 点进去AbstractUser源码里面 ,修改verbose_name_plural成中文名称即可。
 class Meta:
	verbose_name = _("user")
	verbose_name_plural = _("users")
	abstract = True

image-20240420083616149

# 修改成中文
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 = "图书"  # 这里是修改后台站点管理的名称

image-20240420084038589

image-20240420084645782

如何将app01(即你自己的app名称)改成中文的

image-20240420084300070

# 去你的app  apps.py里面
# 添加verbose_name = 想要的名称即可

from django.apps import AppConfig


class App01Config(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "app01"
    verbose_name = "图书管理"  # 修改这个即可

image-20240420084347253

增加组

组就是rbac里面的多对多第三张表

image-20240420085047871

增加用户

image-20240420085802892

image-20240420085932823

image-20240420091049694

修改对象在后台的显示效果

image-20240420141157080

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

image-20240420141401116

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

image-20240420112941217

image-20240420113817405

image-20240420114013313

image-20240420114124962

更多使用也可以参考我之前的文章: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,
}

image-20240420152303763

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. 启动项目,完成 

image-20240420122643700

标签:name,admin,09,site,auth,django,权限,模板
From: https://www.cnblogs.com/ccsvip/p/18147775

相关文章

  • linux5-用户权限
    1.id+用户名显示用户详细信息1[root@linuxprobe~]#idlinuxprobe2uid=1000(linuxprobe)gid=1000(linuxprobe)groups=1000(linuxprobe)2.useradd创建用户1[root@linuxprobe~]#useraddlinuxcool2[root@linuxprobe~]#idlinuxcool3uid=1001(linuxcool)gid=10......
  • com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at S
     适用的druid数据库连接池一直有问题,无法连接,但是什么都没改过。排查了数据库(数据库单独连接没问题)、防火墙、IP白名单等步骤后,重启服务器、重启应用后都无法解决。重启应用过程中发现了应用无法正常启动的情况,这点让人觉得很意外,于是想看下现在服务器上运行的jar包情况,命令是......
  • L1-009 N个数求和
    #include<bits/stdc++.h>usingnamespacestd;constintinf=0x3f3f3f3f;#definelllonglongstructFraction{ llfenzi,fenmu;};intgcd(inta,intb){ if(b==0)returna; returngcd(b,a%b);}intlcm(inta,intb){ returna/gcd(a,b)*b;}Fracti......
  • [题解]ABC209F Deforestation
    ABC209FDeforestation首先我们可以思考\(a_i\)和\(a_{i+1}\)先砍哪棵花费少。可以看出,当\(a[i]<a[i+1]\)时,先砍\(a[i+1]\),反之亦然。所以这个题转化成了:给定\(n-1\)个关系,分别表示\(n\)个值中相邻两个的大小关系,问满足这些关系的序列个数。与AtcoderEducationalDPContest......
  • django自带的权限介绍(rbac)
    权限介绍#1写过权限类---》控制用户,是否有权限访问我们的接口#2之前咱们直接定死,普通用户,超级用户,管理员这种身份,给不同人设置不同权限#3比如都是互联网用户:抖音acl控制 -游客用户只能查看-登陆用户可以查看和评论-粉丝超过1000用户,开直播#4公司......
  • 项目新建模板
    pom<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org......
  • mysql 用户权限配置
    --新建用户CREATEUSER'feng'@'%'IDENTIFIEDBY'123';--给用户赋予test2数据库的user表的只读权限GRANTSELECTONtest2.userTO'feng'@'%';--给用户赋予test2数据库所有表的只读权限GRANTSELECTONtest2.*TO'feng'@'%'......
  • Springboot 下载模板
    文件路径在项目的resources下面  路径 resources/tempExcel/导入模板.xlsx后端代码:/***下载模板**@paramresponse*@throwsIOException*/@RepeatSubmit@PostMapping("/download/template")publicvoiddownloadTemplate(HttpServletResponseresponse)throws......
  • linux使用官方安装包安装的lazarus如需修改lazarus文件需要用root权限
    最近有网友反馈linux使用官方安装包安装的lazarus,按尝试解决linux下Lazarus2.2.0版代码编辑器和SynEdit不支持中文输入的Bug(2024.02.27解决《修正LinuxLazarusIDE代码编辑器中文输入》后用fpcupdeluxe重新编译lazarus时出错的Bug)-秋·风-博客园(cnblogs.com),修改后重构laz......
  • c++函数模板和运行机制
    C++_templatec++提供了函数模板(functiontemplate.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模板。凡是函数体相同的函数都可以用这个模板代替,不必定义多个函数,只需在模板中定义一次即可。在调用函......