我想实现第二个管理站点,它提供主管理站点的功能子集。这是可能的,并在Django 文档中进行了描述
但是,我想限制对主管理站点的访问。一些用户可以访问第二个站点,但不能访问主站点。
为了实现该功能,我希望这些用户不在员工中(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')
不幸的是,这种方法行不通。用户可以登录,但在辅助管理站点中看不到任何内容。
这种方法有什么问题?知道如何实现此功能吗?
提前致谢