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

initgroup.py

  1. # -*- coding: utf-8 -*-
  2. from django.core.management import BaseCommand
  3. from django.contrib.auth.models import Group, Permission, ContentType
  4.  
  5. from apps.news.models import News, NewsCategory, Comment
  6. from apps.cms.models import Banners
  7. from apps.course.models import Course, CourseOrder, Category
  8.  
  9. class Command(BaseCommand):
  10. def handle(self, *args, **options):
  11. # 编辑组/财务组/管理员组/超级管理员
  12. # python manage.py initgroup
  13. # 编辑人员权限:编辑文章/轮播图/付费资讯/课程
  14.  
  15. # 创建编辑组
  16. # model对应的app名字 !!!get_for_model not is get_for_models
  17. edit_content_types = [
  18. ContentType.objects.get_for_model(News),
  19. ContentType.objects.get_for_model(NewsCategory),
  20. ContentType.objects.get_for_model(Banners),
  21. ContentType.objects.get_for_model(Comment),
  22. ContentType.objects.get_for_model(Course),
  23. ContentType.objects.get_for_model(Category),
  24. ]
  25. # 添加权限
  26. # 查找出这些models需要的权限
  27. edit_permissions = Permission.objects.filter(content_type__in=edit_content_types)
  28.  
  29. # 创建权限组的名字
  30. editGroup = Group.objects.create(name='编辑')
  31. # 添加权限
  32. editGroup.permissions.set(edit_permissions)
  33.  
  34. # 2.创建财务组
  35. finance_content_types = [
  36. ContentType.objects.get_for_models(CourseOrder)
  37. ]
  38. finance_permissions = Permission.objects.filter(content_type__in=finance_content_types)
  39. finance_group = Group.objects.create(name='财务组')
  40. finance_group.permissions.set(finance_permissions)
  41.  
  42. # 3.创建管理员,拥有财务和编辑权限
  43. admin_permissions = edit_permissions.union(finance_permissions)
  44. admin_group = Group.objects.create(name='管理员')
  45. admin_group.permissions.set(admin_permissions)
  46.  
  47. 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. [转]Aroon Indicator

    Aroon Indicator Trend Oscillator Description The Aroon indicator, developed by Tushar Chande, indica ...

  2. nginx只允许移动端访问( 判断拦截pc浏览器访问)

    set $mobile_request '0'; if ($http_user_agent ~* (Android|webOS|iPhone|iPod|BlackBerry)) { set $mobi ...

  3. WCF 基础连接已经关闭: 服务器关闭了本应保持活动状态的连接。

    详细错误信息: System.ServiceModel.CommunicationException: 接收对 http://localhost:48655/XXXXXX.svc 的 HTTP 响应时 ...

  4. 有了Jenkins,为什么还需要一个独立的部署系统

    需不需要一个独立的部署系统是很多企业用户在构建持续交付流程中经常困惑的一个问题.也经常有用户会问我们,现在已经有Jenkins,它自身提供了丰富的部署插件(如WebSphere部署插件.Tomcat部 ...

  5. WPF Demo19 命令、UC

    命令系统的基本元素和关系WPF命令系统的组成要素:A.命令(command):WPF命令实际上就是实习了ICommand接口的类.平时使用最多的就是RoutedCommand类.B.命令源(comma ...

  6. ALGO-39_蓝桥杯_算法训练_数组排序去重

    问题描述 输入10个整数组成的序列,要求对其进行升序排序,并去掉重复元素. 输入格式 10个整数. 输出格式 多行输出,每行一个元素. 样例输入 样例输出 解题思路: 若输入的数字存在数组中,剔除,否 ...

  7. 使用Selenium模拟浏览器抓取斗鱼直播间信息

    获取斗鱼直播间每个房间的名称.观看人数.tag.主播名字 代码: import time from multiprocessing import Pool from selenium import w ...

  8. Python:删除、增加字典的元素

    一)增加一个或多个元素 d = {'a': 1}  d.update(b=2)  #也可以 d.update({‘b’: 2}) print(d) -->{'a': 1, 'b': 2}    ...

  9. PHP——抽象类与接口的区别

    在学习PHP面向对象时,都会在抽象类与接口上迷惑,作用差不多为什么还那么容易混淆,何不留一去一?但是事实上两者的区别还是很大的,如果能够很好地运用PHP的两个方法,面向对象的程序设计将会更加合理.清晰 ...

  10. python之路——1

    王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 学习内容 python的历史: python2 源码不标准,混乱,重复代码太多, python3 统一 标准 ...