Django中的staff、admin、superuser有什么区别?

75

Django有超级用户、工作人员、管理员等。

超级用户和工作人员位于django.contrib.auth.models.UserManager中。然后有django-admincreatesuperuser命令。

好的,还有管理应用程序...那有什么区别呢?

4个回答

51
我从 Django文档 中找到了以下内容:

Django最强大的部分之一就是自动管理界面。最好的事情是你可以轻松地自定义它。

如果作为超级用户登录,您可以访问创建、编辑和删除任何对象(模型)的权限。

您可以使用工作人员标志创建工作人员用户。“工作人员”标志控制用户是否被允许登录管理界面(即该用户在组织中是否被视为“工作人员”)。由于相同的用户系统可用于控制对公共(即非管理员)站点的访问,因此该标志区分公共用户和管理员。

“普通”管理员用户——即活动的、非超级用户工作人员——通过分配的权限获得管理访问权限。通过管理界面可编辑的每个对象都有三个权限:创建权限、编辑权限和删除权限,适用于您创建的所有模型。

Django的管理网站使用一个权限系统,您可以使用它仅向特定用户授予他们所需的接口部分的访问权限。当您创建一个用户时,该用户没有任何权限,您需要为该用户指定特定的权限。


35

Django只有一种用户类型,它就是简单的User。根据你给用户授予的权限,他们默认可以做不同的事情:

  1. 任何普通用户都可以被认证(这就是用户的全部用途,即拥有登录)。
  2. 任何被分配了staff标记的用户,可以登录到贡献的管理应用程序。除此之外,他们没有其他特殊权限。
  3. 他们可以被设置为活跃或非活跃状态。只有活跃用户才允许登录。

超级用户只是一个方便的方法,可以创建一个具有所有权限的用户。他们只是默认情况下被赋予工作人员和所有权限的普通用户。

还有ADMINSMANAGERS设置。

当网站在生产中运行(即DEBUG为False时),这些设置用于通知。

管理员会收到任何生成traceback的错误的通知。他们会通过电子邮件接收traceback和有关请求的信息。当有人请求不存在的链接时(基本上是当404错误时),管理员会收到电子邮件通知。


1
请注意,您需要使用 BrokenLinkEmailsMiddleware 启用向经理发送邮件的功能。 - mknecht

21

超级用户自动拥有所有权限(has_perm将返回True)。

工作人员可以登录管理页面。

管理页面是一个简单的界面,用于显示您配置为在其中显示的模型。它只显示当前用户具有正确权限的模型。

因此,如果某人既是超级用户又是工作人员,则可以登录到管理站点并完全访问在管理站点中显示的所有模型。


1
在Django中,超级用户是一种特殊类型的用户,他们拥有所有权限并可以在网站上执行任何操作。通常,在安装Django项目时会创建超级用户,并可以使用Django管理界面或命令行工具进行管理。超级用户有能力管理网站的所有方面,包括创建和管理其他用户、修改站点设置和执行管理任务。
另一方面,管理员成员是一个具有特定应用程序或应用程序部分特权的用户。在Django中,管理成员通常是具有管理特定应用程序或应用程序内特定资源权限的用户。例如,博客应用程序的管理员成员可能具有创建、编辑和删除博客文章的权限,但不能访问站点设置或其他管理任务。
总的来说,Django中超级用户和管理员成员之间的关键区别是他们对网站的访问和控制级别不同
  • 超级用户具有完全控制权并可以在站点上执行任何操作

  • 管理员成员通常仅限于在特定应用程序或网站部分内的一组特定权限和操作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接