Django默认提供的权限控制是基于模型级的,但是如果一个系统对于权限的控制比较复杂,模型级的权限控制是不满足需求的。django-guardian弥补了Django的权限控制的不足,它是基于对象级的权限控制,可能把权限控制得更加细致,从而应对复杂的系统。
Django默认提供的权限控制方式是基于模型级,而django-guardian提供了对象级的权限控制。
pip install django-guardian
在Django项目的settings.py
文件的INSTALLED_APPS
添加guardian
:
INSTALLED_APPS = (
...
'guardian',
)
在AUTHENTICATION_BACKENDS
中添加guardian.backends.ObjectPermissionBackend
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend', # default
'guardian.backends.ObjectPermissionBackend',
)
如果找不到AUTHENTICATION_BACKENDS ,可以把上面的代码直接复制到settings.py文件中。
执行迁移文件:
python manage.py migrate
执行结束后,刷新数据库,数据库中增加了两个表:
guardian_groupobjectpermission
guardian_userobjectpermission
从表名看得出,guardian_groupobjectpermission
是记录用户组的相关对象的权限,guardian_userobjectpermission
是记录用户的相关对象的权限。
本期文章只是简单介绍了django-guardian以及配置,下一期将开始正式介绍其用法。