对 django 权限和组模型感到困惑?
Confusion about the django permission and group model?
例如我这样创建权限:
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才能申请权限
但是,如果管理员(不是开发人员)创建了代号与视图中使用的代号不同的新权限怎么办?我们应该手动转到代码并编辑代号?或者有什么更好的解决方案吗?管理员如何在不手动进入代码的情况下在视图中应用新创建的权限?
我是站在普通用户的角度想的,我们把项目交给client.How之后,能he/she管理这样的事情吗?
注意:我没有使用 django 默认管理面板
简单的答案:通过管理员创建自定义权限确实没有任何意义,因为代码对这些权限一无所知(并且权限对您的代码一无所知,FWIW)。
如果您的应用需要自定义权限,您可以通过代码创建它们(即在迁移中),并将它们与使用它们的代码一起部署。然后管理员可以将这些权限分配给他们认为合适的选定用户或组。
例如我这样创建权限:
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才能申请权限
但是,如果管理员(不是开发人员)创建了代号与视图中使用的代号不同的新权限怎么办?我们应该手动转到代码并编辑代号?或者有什么更好的解决方案吗?管理员如何在不手动进入代码的情况下在视图中应用新创建的权限?
我是站在普通用户的角度想的,我们把项目交给client.How之后,能he/she管理这样的事情吗?
注意:我没有使用 django 默认管理面板
简单的答案:通过管理员创建自定义权限确实没有任何意义,因为代码对这些权限一无所知(并且权限对您的代码一无所知,FWIW)。
如果您的应用需要自定义权限,您可以通过代码创建它们(即在迁移中),并将它们与使用它们的代码一起部署。然后管理员可以将这些权限分配给他们认为合适的选定用户或组。