0

据我所知,在 django 中可以使用 3 个权限级别(无论是通过 django 本身还是通过使用 3rd 方应用程序)。1) 基于模型的权限 2) 基于对象的权限 3) 基于行的权限

如果您能告诉我这 3 个权限系统级别之间的确切区别,那就太好了。

4

1 回答 1

2

不知道你从哪里得到这些信息,但它甚至不是完全正确的。Django 在技术上没有任何权限系统。contrib 应用程序添加了一个“权限”系统,auth但它是可选的,可以完全用其他东西代替。该admin应用程序(也是一个 contrib 包,并且是可选的)使用auth,所以如果你在谈论 Django 管理员,或者在auth你自己的应用程序中使用这个包,那么我们可以谈谈。

auth中,你有Users、Groups 和Permissions。Users 有“超级用户”或“常规”用户风格,Permission当您运行 syncdb(auth包含在 中INSTALLED_APPS)时,项目中的每个模型都会自动获得三个 s:can_add、can_change 和 can_delete。Users 标记为“超级用户”( is_superuser == True),可以对任何模型执行任何操作。其他用户需要Permission明确分配给他们。此外,Groups 可能有Permissions 分配给它们,然后,任何User分配给它的人都会Group继承这些权限。

因此,用户可能无法对任何模型执行任何操作,无法对某些或所有模型进行添加、更改或删除功能的某种组合,或者无法完全访问对任何模型执行任何操作。在“实例”的意义上,没有“基于对象”权限的概念。您可以编辑模型的每个实例,也可以不编辑。也没有“基于行”权限的概念。无论如何,数据库表中的一行只是模型的一个实例。

于 2012-05-08T21:35:40.220 回答