django实现用户权限

我们经常会有这样的需求,给不同的用户显示不同的页面,这样的功能在Django是怎么实现在的呢?
其实这个逻辑很简单,我们可以先预先设置好几个组,每个组显示的页面都不同,我们可以把用户分配到对应的组里面,具体来说:
第一当然是建立用户表,我们选择重写Django自带的用户表,这样就是继承abstractuser了,然后再settings里填入AUTH_USER_MODEL = ‘users.UserProfile’,在类里面添加我们新的字段即可.
django自带的权限管理更适合后台管理,来管理控制某个用户对后台操作的权限,就是 add, change, delete权限。
那我们怎么自定义权限呢?
首先要在models中建立权限的名称和描述信息,这个信息是在django admin中设置权限时显示的信息.另外还要注意的是,我们必须为url设置name, 因为权限需要和urlname配合使用,
第二,建立一个权限表Permission, 将权限的名称,url名称,请求方法(get or post), 参数列表保存进去
第三步, 定义判断权限的方法,这个就是描述你这个权限是干什么的,你想显示什么样的页面,就在这里面写好定义.
最终逻辑是这样的:
用户发送一个请求(打开一个页面), 先获取url地址,根据url地址得到urlname, 再获取请求方法和参数,然后使用(urlname, 请求方法,参数列表)这样一个映射关系,到数据库中查询,能查询到之后说明这个权限存在;然后再使用request.user.has_perm()来判断该用户是否具有该权限。
有权限,则根据我们第三步定义好的规则去返回,如果没有,则需要我们再定义一个403页面,这样的话,就大功告成啦.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值