据我所知,在 django 中可以使用 3 个权限级别(无论是通过 django 本身还是通过使用 3rd 方应用程序)。1) 基于模型的权限 2) 基于对象的权限 3) 基于行的权限
如果您能告诉我这 3 个权限系统级别之间的确切区别,那就太好了。
据我所知,在 django 中可以使用 3 个权限级别(无论是通过 django 本身还是通过使用 3rd 方应用程序)。1) 基于模型的权限 2) 基于对象的权限 3) 基于行的权限
如果您能告诉我这 3 个权限系统级别之间的确切区别,那就太好了。
不知道你从哪里得到这些信息,但它甚至不是完全正确的。Django 在技术上没有任何权限系统。contrib 应用程序添加了一个“权限”系统,auth
但它是可选的,可以完全用其他东西代替。该admin
应用程序(也是一个 contrib 包,并且是可选的)使用auth
,所以如果你在谈论 Django 管理员,或者在auth
你自己的应用程序中使用这个包,那么我们可以谈谈。
在auth
中,你有User
s、Group
s 和Permission
s。User
s 有“超级用户”或“常规”用户风格,Permission
当您运行 syncdb(auth
包含在 中INSTALLED_APPS
)时,项目中的每个模型都会自动获得三个 s:can_add、can_change 和 can_delete。User
s 标记为“超级用户”( is_superuser == True
),可以对任何模型执行任何操作。其他用户需要Permission
明确分配给他们。此外,Group
s 可能有Permission
s 分配给它们,然后,任何User
分配给它的人都会Group
继承这些权限。
因此,用户可能无法对任何模型执行任何操作,无法对某些或所有模型进行添加、更改或删除功能的某种组合,或者无法完全访问对任何模型执行任何操作。在“实例”的意义上,没有“基于对象”权限的概念。您可以编辑模型的每个实例,也可以不编辑。也没有“基于行”权限的概念。无论如何,数据库表中的一行只是模型的一个实例。