在Django admin中,用户权限是对不同用户设置不同的功能使用权限,而每个功能主要以模型来划分。
在Admin后台系统有可视化界面可以进行修改,但需要手动进行修改,比较麻烦怎么才能实现在注册的时候自动给用户分配权限呢?
1.超级用户可以看见所有的应用
2.普通用户可以看见超级用户指定的应用(应用1、应用2)
一、普通手动方法
通过超级用户登陆admin后台,然后一个一个分派权限给普通用户。最大的问题是:在普通用户登陆时,他是没有后台权限的,而需要超级管理员手动在Admin后台分配权限后,普通用户再次登陆才会看到超级管理员分配的可操作的权限。
方法1:点击用户一个一个分配权限(分配的权限多的时候比较麻烦)
方法2:通过用户组进行分配(较方法1简单一点)
建立拥有某些权限的一个用户组,再将这个组分配给当前用户,再有新用户时,直接手动将这个组分配给用户就好了。
实现效果:
首次登陆无权限:
超级用户分配完再登陆:
二、在用户注册时实现自动分配权限
利用创建用户组+代码的方式实现,如下:
第一步:创建一个拥有指定权限的用户组。
第二步:在views.py的注册代码部分添加如下代码:
先引入依赖的包
from django.contrib.auth.models import Group
再加入下列代码:
group = Group.objects.get(id=1)
user.groups.add(group)
这样普通用户在注册完进入界面,就直接有下面的效果了
省去了超级用户手动分配权限的问题。以后新的用户只要注册,就自动有了应用1和应用2的权限。