例如,我创建这样的权限:
Permission.objects.create(name='Can add',codename='can_add',content_type=1)
现在,如果我想在某些视图中应用此权限,我需要像这样使用permission_required装饰器
@permission_required('app.can_add', raise_exception=True)
def some_view(request):
...
在这里,我需要完全匹配装饰器中的权限code_name才能应用权限。
但是,如果管理员(不是开发人员(使用与视图中使用的代号不同的代号创建新权限怎么办?我们应该手动转到代码并编辑代号?还是有更好的解决方案?管理员如何在视图中应用新创建的权限,而无需手动进入代码?
在我们把项目交给客户之后,我是从普通用户的角度考虑的。他/她如何管理这些事情?
注意:我没有使用 django 默认管理面板
简单的答案:通过管理员创建自定义权限确实没有任何意义,因为代码对这些权限一无所知(并且权限也不知道您的代码 FWIW(。
如果你的应用需要自定义权限,可以通过代码(即在迁移中(创建它们,并将它们与使用它们的代码一起部署。然后,管理员可以根据需要将这些权限分配给选定的用户或组。