django用户权限操作
第一步:创建数据库和超级管理员,为了比较方便使用(里面有些的是没用的),额外新增
chioces ,
per_method ,
argument_list
# 用户权限
# 建立一个权限表,将映射关系存到数据库中
class Permission(models.Model):
identifier = models.CharField(max_length=40, unique=True)
USERNAME_FIELD = 'identifier' name = models.CharField("权限名称", max_length=64,null=True)
url = models.CharField('URL名称', max_length=255,null=True)
#chioces = ((1, 'GET'), (2, 'POST'))
#per_method = models.SmallIntegerField('请求方法', choices=chioces, default=1)
#argument_list = models.CharField('参数列表', max_length=255, help_text='多个参数之间用英文半角逗号隔开', blank=True, null=True)
describe = models.CharField('描述', max_length=255,null=True) def __str__(self):
return self.name class Meta:
verbose_name = '权限表'
verbose_name_plural = verbose_name
#权限信息,这里定义的权限的名字,后面是描述信息,描述信息是在django admin中显示权限用的
permissions = (
('views_user_list', '查看用户信息表'),
('views_user_info', '查看用户详细信息'),
)
创建数据库和超级管理员
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser 第二步:创建验证权限的代码
from django.shortcuts import render
from django.core.urlresolvers import resolve #此方法可以将url地址转换成url的name
from user.models import Permission def perm_check(request, *args, **kwargs):
url_obj = resolve(request.path_info)
url_name = url_obj.url_name #获取url地址的名字
perm_name = ''
#权限必须和urlname配合使得
if url_name:
#获取请求方法,和请求参数
url_method, url_args = request.method, request.GET
print("11111111111") if url_method == 'GET':
url_method =1
else:
url_method =2
#将各个参数的值用逗号隔开组成字符串,因为数据库中是这样存的 后期可以用一下
# for i in url_args:
# url_args_list.append(str(url_args[i]))
# url_args_list = ','.join(url_args_list)
#操作数据库
get_perm = Permission.objects.filter(url=url_name,per_method=url_method)
if get_perm:
for i in get_perm:
perm_name = i.name #获取权限名称
perm_str = 'user.%s' % perm_name
if request.user.has_perm(perm_str):
print('====》权限已匹配')
return True
else:
print('---->权限没有匹配')
return False
else:
return False
else:
return False #没有权限设置,默认不放过 def check_permission(fun): #定义一个装饰器,在views中应用
def wapper(request, *args, **kwargs):
if perm_check(request, *args, **kwargs): #调用上面的权限验证方法
return fun(request, *args, **kwargs)
return render(request, 'user/403.html', locals())
return wapper
第三步:注册需要权限操作的数据库表,在admin里面
from django.contrib import admin # Register your models here.
from . import models admin.site.register([models.UserInfo,models.Permission]) 第四步:使用
from user.userTool.permission import check_permission
@check_permission
django用户权限操作的更多相关文章
- T-Sql(七)用户权限操作(grant)
一般数据库的权限操作我们很少用,除非一些大型的项目,需要给数据库配置不同的用户及权限,防患于未然,今天我们就来了解下t-sql中配置用户权限操作. 先看示例代码: --创建登录名 create log ...
- mysql用户权限操作
mysql用户权限操作1.创建用户mysql -urootcreate database zabbix default charset utf8;grant all on zabbix.* to za ...
- [Django]用户权限学习系列之权限管理界面实现
本系列前三章: http://www.cnblogs.com/CQ-LQJ/p/5604331.htmlPermission权限基本操作指令 http://www.cnblogs.com/CQ-LQJ ...
- [Django]用户权限学习系列之设计自有权限管理系统设计思路
若在阅读本片文章遇到权限操作问题,请查看本系列的前两章! http://www.cnblogs.com/CQ-LQJ/p/5609690.html和http://www.cnblogs.com/CQ- ...
- [Django]用户权限学习系列之User权限基本操作指令
针对Django 后台自带的用户管理系统,虽说感觉还可以,但是为了方便用户一些操作,特别设计自定义的用户权限管理系统. 在制作权限页面前,首先需要了解权限和用户配置权限的指令,上章讲到权限的添加,删除 ...
- [Django]用户权限学习系列之Permission权限基本操作指令
若需建立py文件进行测试,则在文件开始加入以下代码即可 #coding:utf-8 import os os.environ.setdefault("DJANGO_SETTINGS_MODU ...
- mysqli用户权限操作
此操作指令在 mysql 的数据库中 所以要 use mysql 查询mysqli中所有用户的权限 select host,user form user; 添加用户 grant all privil ...
- MongoDB用户权限操作语法及示例
1.创建用户 1.1.语法格式: 1.1.1.格式及例子 >db.createUser( { user: "<name>", pwd: "<cle ...
- SQLServer —— 用户权限操作
说明 以下操作都是基于SQLServer登陆验证方式登陆.而且操作员都是 sa. 一.添加登陆账号 use master go ' 第一个(xu)是登陆名,第二个(123456)是登陆密码. 执行语句 ...
随机推荐
- HOMEWORK1
回顾你过去将近3年的学习经历 当初你报考的时候是真正喜欢计算机这个专业吗? 当初报考的时候是选择英语和计算机专业,报英语那个学校没去上,就来学了计算机,对计算机专业的感觉介于喜欢和热爱之间,就是说还是 ...
- vue.js组件传值
组件传值有一下几种方式:父子传值(父传子,子传父),非父子传值,vuex,插槽作用域 1.父子传值: (1)父传子: 传值方:当子元素在父元素中当标签使用时,通过给子标签绑定一个自定义属性,属性值为需 ...
- 关于使用git上传远程仓库的两种情况(新项目与老项目)
具体的git配置与github仓库ssh配置在这里就不再赘述,本次只讲自己之前遇到的两个内容 1.还没有项目,将远程仓库clone下来直接在里边写项目. 2.已有项目,将已有的项目直接添加到建立好的远 ...
- Python练习十一
1.写一个程序,提示输入整数X,然后计算从1到X连续整数的和. num = int(input('please the input number:')) sum_num = 0 for i in ra ...
- Actifio中的Group和Consistency Group
多个应用程序具有相同的保护需求时可以使用应用程序组: Groups用于简化管理,将策略应用于组内的应用程序. 组中的每个应用程序的备份映像单独执行装载,克隆和还原操作. Consistency Gro ...
- supervisor 文档
supervisor 是用 Python 开发的一个 C/S 服务.是 Linux/Unix 系统下的进程管理工具.它可以很方便的监听.启动.停止.重启一个或多个进程.用Supervisor管理的进程 ...
- mysql update where
UPDATE car_approval a JOIN car_distribute b ON a.id = b.APPROVAL_FOR_CAR_ID SET a.APPROVAL_STATUS = ...
- html限制文本框只能输入数字和一个小数点
近期在做一个前台页面,有一个文本框是用来输入充值金额的,就想到了限制用户只能输入纯数字的数据且只能包含一个小数点.下面就是我实现的代码 $(function() { //阻止数字键以外的按键输入 $( ...
- mpt2sas0: log_info(0x31120100): originator(PL), code(0x12), sub_code(0x0100)及同类问题的追踪
做存储或者磁盘阵列的经常会遇到linux kernel打印如下信息或者类似的信息,这是什么原因导致的呢? mpt2sas0: log_info(0x31120100): originator(PL), ...
- CentOS7下安装Python3并保留Python2
1. 安装make编译指令的依赖环境 # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel ...