我希望能够实现第二个管理员站点,该站点提供主要管理员站点的一部分功能。这是可能的,并在Django文档中有描述。
然而,我想限制对主要管理员站点的访问。某些用户可以访问第二个站点,但不能访问主站点。
为了实现这个功能,我希望这些用户不属于员工(is_staff=False),并重写
很不幸,这种方法行不通。用户可以登录,但无法在辅助管理站点中看到任何内容。
这种方法有什么问题? 有没有想法如何实现此功能?
提前感谢。
然而,我想限制对主要管理员站点的访问。某些用户可以访问第二个站点,但不能访问主站点。
为了实现这个功能,我希望这些用户不属于员工(is_staff=False),并重写
AdminSite.has_permission
。class SecondaryAdminSite(AdminSite):
def has_permission(self, request):
if request.user.is_anonymous:
try:
username = request.POST['username']
password = request.POST['password']
except KeyError:
return False
try:
user = User.objects.get(username = username)
if user.check_password(password):
return user.has_perm('app.change_onlythistable')
else:
return False
except User.DoesNotExist:
return False
else:
return request.user.has_perm('app.change_onlythistable')
很不幸,这种方法行不通。用户可以登录,但无法在辅助管理站点中看到任何内容。
这种方法有什么问题? 有没有想法如何实现此功能?
提前感谢。
has_permission
函数?页面上完全没有任何显示吗(即完全空白),还是只是隐藏了管理员功能? - Jordan Reiteris_staff
来进行授权。如果你有某些理由不能将这些用户设置为真,我认为最好的选择是编写自己的管理员视图。通过像has_permission
装饰器这样的访问控制,您可以强制执行自己的授权方案。 - Paul Bissex