django-BaseCommand自带的权限分组
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自带的权限分组的更多相关文章
- centos 带S权限的二进制
早上写的一个用find查找带S权限的,感觉不记一下可惜了. [root@iZ28wg1kditZ ~]# find / -type f -exec ls -al {} \;|awk 'BEGIN {p ...
- 配置带用户权限的docker registry v2
v1版本的docker registry用nginx配置,v2版本的用nginx有些问题,客户端总是会请求到v1/下面去, 以下从 http://blog.csdn.net/felix_yujing/ ...
- Django Rest Framework(认证、权限、限制访问频率)
阅读原文Django Rest Framework(认证.权限.限制访问频率) django_rest_framework doc django_redis cache doc
- Android权限申请完全解析(一):Android自带的权限申请
1.为什么要权限申请 6.0以上就需要了,别问为什么.(不是重点,自行搜索) 2.如何进行权限申请 Android自带的权限申请 EasyPermission权限申请 Ps:EasyPermissio ...
- Django路由系统---url无命名分组
django重点之url无命名分组[参数有顺序要求] settigs.py:增加STATICFILES_DIRS静态资源路径配置,名称为创建的文件夹名称 'DIRS': [os.path.join(B ...
- Django源码分析之权限系统_擒贼先擒王
乍见 Django内置的权限系统已经很完善了,加上django-guardian提供的功能,基本上能满足大部分的权限需求.暂且不说django-guardian,我们先来看下Django内置的权限系统 ...
- 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 ...
- Django框架08 /聚合查询、分组、F/Q查询、原生sql相关
Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 目录 Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 1. 聚合查询 2. 分组 3. F查询和Q查询 4. o ...
- Django之自带的认证系统 auth模块
01-Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Dj ...
随机推荐
- TransportClient 新建index,mappings dynamic_templates。
public void createIndex(TransportClient client, String index){ CreateIndexRequest request = new Crea ...
- Github访问慢解决办法
为什么慢?github的CDN被某墙屏了. 绕过dns解析,在本地直接绑定host.打开dns查询工具网站http://tool.chinaz.com/dns 查询域名github.global.ss ...
- 【java】进制转换
进制的表现形式: 十进制:0-9 ,满10 进1 八进制:0-7,满8进1,用0开头表示 十六进制:0-9,A-F,满16进1,用0x开头表示 十进制转换二进制: 原理:对十进制数进行除2运算,如37 ...
- 阅读<Video Test Pattern Generator v7.0>笔记
阅读<Video Test Pattern Generator v7.0>笔记 1.数据宽度的问题 TotalDataWidth的计算公式: 疑问:为什么TotalDataWidth后面需 ...
- Hiero_FnNukeShotExporter的解析与修改
研究对象:Hiero中的FnNukeShotExporter脚本 研究目的:修改FnNukeShotExporter使得可以将多个TrackItem导入到一个.nk中 FnNukeShotExpo ...
- json server的简单使用(附:使用nodejs快速搭建本地服务器)
作为前端开发人员,经常需要模拟后台数据,我们称之为mock.通常的方式为自己搭建一个服务器,返回我们想要的数据.json server 作为工具,因为它足够简单,写少量数据,即可使用. 安装 首先需要 ...
- nginx简单学习(tomcat)
一.负载均衡的简单配置 1.下载nginx 2.tomcat*2 配置不同的端口用于正常启动,在jsp中<%= session.getId()%>可以查看jSessionId,tomcat ...
- Elasticsearch 5.2.x 使用 Head 插件连接不上集群
如果访问elasticsearch出现跨域的问题,如下: 修改elasticsearch.yml文件 vim $ES_HOME$/config/elasticsearch.yml # 增加如下字段 h ...
- Qt 使用QMovie加载gif图片实现动态等待窗口
import sys from PyQt4 import QtGui, QtCore from PyQt4.QtGui import QLabel app = QtGui.QApplication(s ...
- Mongodb条件查询Query的用法
Query.All("name", "a", "b");//通过多个元素来匹配数组Query.And(Query.EQ("name ...