note:  应该是这样的结构,并且commands名字是固定的。 执行: python manage.py  initgroup

initgroup.py

# -*- coding: utf-8 -*-
from django.core.management import BaseCommand
from django.contrib.auth.models import Group, Permission, ContentType from apps.news.models import News, NewsCategory, Comment
from apps.cms.models import Banners
from apps.course.models import Course, CourseOrder, Category class Command(BaseCommand):
def handle(self, *args, **options):
# 编辑组/财务组/管理员组/超级管理员
# python manage.py initgroup
# 编辑人员权限:编辑文章/轮播图/付费资讯/课程 # 创建编辑组
# model对应的app名字 !!!get_for_model not is get_for_models
edit_content_types = [
ContentType.objects.get_for_model(News),
ContentType.objects.get_for_model(NewsCategory),
ContentType.objects.get_for_model(Banners),
ContentType.objects.get_for_model(Comment),
ContentType.objects.get_for_model(Course),
ContentType.objects.get_for_model(Category),
]
# 添加权限
# 查找出这些models需要的权限
edit_permissions = Permission.objects.filter(content_type__in=edit_content_types) # 创建权限组的名字
editGroup = Group.objects.create(name='编辑')
# 添加权限
editGroup.permissions.set(edit_permissions) # 2.创建财务组
finance_content_types = [
ContentType.objects.get_for_models(CourseOrder)
]
finance_permissions = Permission.objects.filter(content_type__in=finance_content_types)
finance_group = Group.objects.create(name='财务组')
finance_group.permissions.set(finance_permissions) # 3.创建管理员,拥有财务和编辑权限
admin_permissions = edit_permissions.union(finance_permissions)
admin_group = Group.objects.create(name='管理员')
admin_group.permissions.set(admin_permissions) self.stdout.write(self.style.SUCCESS("初始化分组成功"))

权限分组完成,权限验证场景: https://www.cnblogs.com/tangpg/p/9431620.html

django-BaseCommand自带的权限分组的更多相关文章

  1. centos 带S权限的二进制

    早上写的一个用find查找带S权限的,感觉不记一下可惜了. [root@iZ28wg1kditZ ~]# find / -type f -exec ls -al {} \;|awk 'BEGIN {p ...

  2. 配置带用户权限的docker registry v2

    v1版本的docker registry用nginx配置,v2版本的用nginx有些问题,客户端总是会请求到v1/下面去, 以下从 http://blog.csdn.net/felix_yujing/ ...

  3. Django Rest Framework(认证、权限、限制访问频率)

    阅读原文Django Rest Framework(认证.权限.限制访问频率) django_rest_framework doc django_redis cache doc

  4. Android权限申请完全解析(一):Android自带的权限申请

    1.为什么要权限申请 6.0以上就需要了,别问为什么.(不是重点,自行搜索) 2.如何进行权限申请 Android自带的权限申请 EasyPermission权限申请 Ps:EasyPermissio ...

  5. Django路由系统---url无命名分组

    django重点之url无命名分组[参数有顺序要求] settigs.py:增加STATICFILES_DIRS静态资源路径配置,名称为创建的文件夹名称 'DIRS': [os.path.join(B ...

  6. Django源码分析之权限系统_擒贼先擒王

    乍见 Django内置的权限系统已经很完善了,加上django-guardian提供的功能,基本上能满足大部分的权限需求.暂且不说django-guardian,我们先来看下Django内置的权限系统 ...

  7. django上课笔记2-视图CBV-ORM补充-Django的自带分页-Django的自定义分页

    一.视图CBV 1.urls url(r'^login.html$', views.Login.as_view()), 2.views from django.views import View cl ...

  8. Django框架08 /聚合查询、分组、F/Q查询、原生sql相关

    Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 目录 Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 1. 聚合查询 2. 分组 3. F查询和Q查询 4. o ...

  9. Django之自带的认证系统 auth模块

    01-Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Dj ...

随机推荐

  1. 阅读 RAM-Based Shift Register(ALTSHIFT_TAPS) IP Core User Guide

    阅读 RAM-Based Shift Register(ALTSHIFT_TAPS) IP Core User Guide 说明:本文档自带测试工程: DE_ALTSHIFT_TAPS.zip 1.支 ...

  2. TStrings与Memo.Lines赋值的问题

    //想实现在函数中生成Memo1的内容,而后赋给Memo.Lines //方法1: var s: TStrings; begin s := TStringList.Create; AddMemoDat ...

  3. matchmove流程中修改Maya相机数据的脚本

    matchmove组的流程涉及到syntheyes与maya,nuke交接的问题.syntheyes会生成包含去畸变节点的nuke工程 和带跟踪信息的maya工程.在nuke工程上渲染得到去畸变的序列 ...

  4. python和linux如何学习一门新的编程语言(python)(python基础结构)

    1.python 开发 1.1基础 python,java语言优势:可以写网页+后台功能,python开发效率高,执行效率低,java执行效率高,开发效率低 环境变量配置:进入--->控制面板\ ...

  5. Java ArrayList排序方法详解

    由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在 ...

  6. IDEA创建简单servlet程序

    创建项目 创建完后的目录结构为: web项目配置 在WEB-INF目录下新建两个文件夹,分别命名未classes和lib(classes目录用于存放编译后的class文件,lib用于存放依赖的jar包 ...

  7. 【Mysql】事务日志-Write Ahead logging vs command-logging(转)

    原理讲解: Write Ahead logging vs command logging Write Ahead logging 持久化数据保存在磁盘,数据的存储是随机的,并非顺序: 内存中保存磁盘数 ...

  8. vc++获取网页源码之使用类型库(TypeLib)生成包装类

    1.在MFC项目名称上 右击->添加->选择Visual C++下的MFC->TypeLib中的MFC类->添加 可以从注册表表中共或是文件中根据相应的接口生成对应的包装类 效 ...

  9. 《Java并发编程实战》笔记-取消与关闭

    1,中断是实现取消的最合理方式.2,对中断操作的正确理解是:它并不会真正地中断一个正在运行的线程,而只是发出中断请求,然后由线程在下一个合适的时刻中断自己.3,区分任务和线程对中断的反应是很重要的4, ...

  10. [UE4]小地图UI放在哪里创建合适?

    在常见的FPS游戏中,玩家死亡以后,还是可以进行聊天和漫游的,因此聊天UI和小地图都应该放在PlayerState中创建