排序和过滤类源码、RBAC的介绍和使用、simplu美化

排序和过滤源码分析

使用过滤类和排序类需要继承GenericAPIView+ListModelMixin,再在视图类中配置filter_backends列表内写过滤类或排序类就能实现过滤和排序

\bullet SearchFilter:过滤类

\bullet OrderingFiler:排序类

filter_backends = [SearchFilter,OrderingFiler]

我们也可以自定义类继承BaseFilterBackend重写filter_queryset,返回后的qs对象就是过滤或排序后的数据,今天来看看源码了解执行流程:

 -第一步:只有获取所有数据才设计到排序、过滤所以我们先看ListModelMixin中的list方法

 第二步:知道了关键是filter_queryset方法完成的过滤,所以我们再看这个方法,视图类自己没有去父类GenericAPIView中找

 总结:自定义过滤类要重写filter_queryset,返回过滤或排序后的qs对象。看了源码后知道以后也可以在视图类中直接重写filter_queryset在里面实现过滤

RBAC的介绍和使用

1.什么是RBAC

        RBAC(Role-Based Access Control )基于角色的访问控制,在RBAC中-----权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这极大地简化了权限的管理,这样管理都是层级相互依赖的,权限赋予给角色而把角色又赋予用户,这样的设计管理起来很方便

例如:

        RBAC权限管理的模式最适合公司内部的管理系统,不适合对外互联网用户的系统。

-公司内表与表关系

        用户表:用户信息

        角色表:部门

        权限表:各种权限

其中用户表和角色表为多对多关系,角色表和权限表为多对多关系这样RBAC就会自动再生成两张中间表用来存放关系

2.django的admin自带的RBAC

        在django的后台管理admin中就自带rbac的权限,通过auth模块实现比一般普通的rbac更高级,普通的rbac会创建5张表而django中的则会有6张比普通的多一张用户直接和权限的多对多关系表

- 启用admin和auth,6张表自动迁移进去

        auth_user:用户表

        auth_group:角色,部门表

        auth_permission:权限表

        auth_user_groups:用户和角色多对多中间表

        auth_group_permissions:角色和权限多对多中间表

        auth_user_user_permissions:用户和权限多对多中间表

-使用django的admin二次开发,不用写权限直接快速加功能即可

3.ACL、RBAC、ABAC权限控制的介绍

\bullet ACL(Access Control List)访问控制列表:

        将用户或组等使用者直接与对象的权限对接

\bullet RBAC(Role-Based Access Control)基于角色的访问控制:

        将用户与角色对接,角色再与对象的权限对接

\bullet ABAC(Attribute-Based Access Control)基于属性的访问控制:

        ABAC又称之为PBAC(Policy-Based Access Control)基于策略的访问控制

        还称之为CBAC(Claims-Based Access Control)基于声明的访问控制

后台管理simplui的介绍和使用

        simplui用来对django admin进行美化,基于drf+vue开发自己写前后端分离的权限管理,还有一个xadmin也可以实现但是过时了而simplui正是当红

-在配置文件settings中配置

import time

SIMPLEUI_CONFIG = {
    'system_keep': False,
    'menu_display': ['我的首页', '图书管理','权限认证', '多级菜单测试', '动态菜单测试'],  # 开启排序和过滤功能, 不填此字段为默认排序和全部显示, 空列表[] 为全部不显示.
    'dynamic': True,  # 设置是否开启动态菜单, 默认为False. 如果开启, 则会在每次用户登陆时动态展示菜单内容
    'menus': [
        {
            'name': '我的首页',
            'icon': 'fas fa-code',
            'url': '/index/',

        },
        {
            'app': 'app01',
            'name': '图书管理',
            'icon': 'fas fa-code',
            'models': [
                {
                    'name': '用户',
                    'icon': 'fa fa-user',
                    'url': 'app01/userinfo/'
                },
                {
                    'name': '图书',
                    'icon': 'fa fa-user',
                    'url': 'app01/book/'
                },
                {
                    'name': '出版社',
                    'icon': 'fa fa-user',
                    'url': 'app01/publish/'
                },
            ]
        },
        {
            'app': 'auth',
            'name': '权限认证',
            'icon': 'fas fa-user-shield',
            'models': [{
                'name': '用户',
                'icon': 'fa fa-user',
                'url': 'auth/user/'
            }]
        },
        {
            # 自2021.02.01+ 支持多级菜单,models 为子菜单名
            'name': '多级菜单测试',
            'icon': 'fa fa-file',
            # 二级菜单
            'models': [
                {
                    'name': '百度',
                    'icon': 'far fa-surprise',
                    # 第三级菜单 ,
                    'models': [
                        {
                            'name': '爱奇艺',
                            'url': 'https://www.iqiyi.com/dianshiju/'
                            # 第四级就不支持了,element只支持了3级
                        },
                        {
                            'name': '百度问答',
                            'icon': 'far fa-surprise',
                            'url': 'https://zhidao.baidu.com/'
                        }
                    ]
                },
                {
                    'name': 'xx',
                    'url': 'https://www.wezoz.com',
                    'icon': 'fab fa-github'
                }]
        },
        {
            'name': '动态菜单测试',
            'icon': 'fa fa-desktop',
            'models': [{
                'name': time.time(),
                'url': 'http://baidu.com',
                'icon': 'far fa-surprise'
            }]
        }]
}


SIMPLEUI_LOGIN_PARTICLES = False
SIMPLEUI_HOME_INFO = False
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值