Django admin - 限制用户访问

时间:2009-06-20 21:47:00

标签: django django-admin

我想知道django管理页面是否可以用于外部用户。

假设我有这些模型:

class Publisher(models.Model):
  admin_user = models.ForeignKey(Admin.User)
  ..

class Publication(models.Model):
  publisher = models.ForeignKey(Publisher)
  ..

我不确定admin_user是什么 - 也许它可能是管理员用户的电子邮件?

反正。有没有办法允许管理员用户只添加/编辑/删除其发布者与该管理员用户相关联的出版物?

-Thanks! -Chris

3 个答案:

答案 0 :(得分:15)

如果您需要在自己的应用程序中使用更细粒度的权限,则应注意Django的管理应用程序通过以下方法支持此功能,这些方法可以在ModelAdmin的子类上重写。请注意,所有这些方法都接收当前的HttpRequest对象作为参数,允许基于特定的经过身份验证的用户进行自定义:

  • queryset(self, request):应返回一个QuerySet,以便在管理员的模型对象列表中使用。此QuerySet中不存在的对象将不会显示。
  • has_add_permission(self, request):如果允许添加对象,则返回True,否则返回False。
  • has_change_permission(self, request, obj=None):如果允许编辑obj,则返回True,否则返回False。如果obj为None,则应返回True或False以指示是否一般允许编辑此类对象(例如,如果False将被解释为意味着当前用户不允许编辑此类型的任何对象)。 / LI>
  • has_delete_permission(self, request, obj=None):如果允许删除obj,则返回True,否则返回False。如果obj为None,则应返回True或False以指示是否一般允许删除此类型的对象(例如,如果False将被解释为意味着当前用户不允许删除此类型的任何对象)。

[django.com]

答案 1 :(得分:0)

django admin可以在一定程度上受到限制。对于给定用户,首先,他们必须具有管理员权限才能登录管理站点。设置了此标志的任何人都可以查看所有管理页面。如果你想限制观看,那你就不走运了,因为那只是没有实现。从那里,每个用户都拥有一系列权限,用于管理站点中每个模型的创建,更新和删除。处理此问题的最方便方法是创建组,然后为组分配权限。

答案 2 :(得分:0)

我看到克里斯的答案在提出问题时很有用。 但现在几乎是2016年,我想更容易为最终用户启用Django Admin panel的限制访问。

Django身份验证系统提供:

  

组:将标签和权限应用于多个用户的一般方法。

可以通过管理面板或编写代码添加特定权限并将该组应用于用户。

将用户添加到这些特定组后,管理员需要为这些用户启用is_staff标记。

用户可以在admin中访问受限制的注册模型。 我希望这会有所帮助。