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 renderfrom django.core.urlresolvers import resolve   #此方法可以将url地址转换成url的namefrom 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


原文地址:https://www.cnblogs.com/ylinhuang/p/10185395.html

时间: 2024-11-02 22:54:51

django用户权限操作的相关文章

2.4.3、Django用户权限控制

上面已经实现了登录和注销功能,但是还没起作用. 我们需要在每个视图函数里加上限制@login_required 如下: from django.contrib.auth.decorators import login_required ... ... @login_required def data_daka(request): all = class.objects.all() ... ... login_required实现了如下功能: 如果用户没有登录, 重定向到/accounts/log

[Django]用户权限学习系列之设计自有权限管理系统设计思路

若在阅读本片文章遇到权限操作问题,请查看本系列的前两章! http://www.cnblogs.com/CQ-LQJ/p/5609690.html和http://www.cnblogs.com/CQ-LQJ/p/5604331.html 现在步入正题,这篇文章是关于自有权限管理系统设计的思路描述,自有权限管理系统是抛弃django自带的后台管理界面,基于自己编写的权限管理界面对用户权限的管理! 首先上图:(自己设计的权限系统界面,代码将后续文章中写出) 权限管理界面主要是添加和删除权限,查看官方

mongodb用户权限操作常用命令

由于公司还有几台mongodb的数据库,需要开放某部分权限给外部人员使用,所以这里记录一下,仅供需要的朋友使用. 1. MongoDB常用命令 [[email protected] ~]# ps -ef|grep mongod [[email protected] ~]# mongo --host=127.0.0.1 --port=27017 MongoDB shell version: 3.2.7 connecting to: 127.0.0.1:27017/test > show dbs  

checkbox样式更改用户权限操作(MVC)

数据库数据与结构下载(mysql): 链接:http://pan.baidu.com/s/1mhN9Mje 密码:j91p 源码下载: 链接:http://pan.baidu.com/s/1pLbGJYN 密码:kf4s 代码还是有点多.另外特别说明一下,因为是个demo.所以我没有完全很规范的分层.就是很随意了.但是其中有些知识点还是可以借鉴的.如果熟悉MVC的同学,也可以看得懂的啦!

开发之南十一:JEECG微云快速开发平台--基础用户权限

 11.1. 权限设计 基本概念 权限管理模块涉及到的实体有:用户.角色和系统资源(包括系统菜单.页面按钮等).用户可以拥有多个角色,角色可以被分配给多个用户.而权限的意思就是对某个资源的某个操作.一般通用的权限管理模块规定:所谓资源即应用系统中提供的要进行鉴权才能访问的资源(比如各类数据,系统菜单):所谓操作即增加.修改.删除.查询等操作. 权限模型 用户权限模型,指的是用来表达用户信息及用户权限信息的数据模型.即能证明"你是谁?"."你能访问哪些受保护资源?"

Django用户认证系统(三)组与权限

Django的权限系统很简单,它可以赋予users或groups中的users以权限. Django admin后台就使用了该权限系统,不过也可以用到你自己的代码中. User对象具有两个ManyToManyField字段,groups和user_permissions groups = models.ManyToManyField(Group, verbose_name=_('groups'), blank=True, help_text=_('The groups this user bel

Oracle对表空间、用户、用户权限的操作

一.对表空间的操作 1.创建表空间(create tablespace) -- 'hpdb_tablespace' 指定表空间名称 -- 'e:\hpdb.dbf' 指定表空间数据文件名称 -- size 指定表空间的初始化大小 -- autoextend on next 30M 指定当表空间不足时,自动扩增的空间大小-- autoextend off 停止自动扩展表空间-- maxsize unlimited 表空间的最大空间不设置上限create tablespace hpdb_tables

django 基于proxy实现用户权限管理

项目中经常会遇到用户权限管理的问题,django adminsite已经提供非常实用的用户权限管理机制.不过有些时候,我们希望根据相关用户属性来过滤adminsite中显示的内容.下文将结束如何实现: 原始类 假设我有这么一个问卷类,基于这个类可以实现增删改查的功能 class wenjuan(models.Model): """ 问卷 """ name=models.CharField(u'问卷名称',max_length=128) breif

ubuntu用户管理与权限操作实例

ubuntu用户管理与权限操作实例 昨天在转载此文时提到都要把文件及目录权限的操作也会独立成文来给大家介绍,今天特地学习了用户管理和权限操作的例程,现总结如下.这些命令基本都是我在自己电脑上运行过后能够实现此功能,我才把他们加进来,希望对大家有所帮助,也希望和大家多交流^_^ 一个实例 例子:假设有两个用户bill和jane,他们都有音乐CD集,并要创建一个共享目录,在该目录下他们各自存储自己的音乐文件.此时用户bill通过sudo获得了超级用户权限. 首先,创建一个以bill和jane为成员的