只允许django admin在网站ID 1上

时间:2017-10-05 09:29:45

标签: django permissions django-admin django-sites

我想只显示ID为1的网站的管理员。 在其他观点中,我已在dispatch中对此进行了定义,但我还没有找到办法为管理员执行此操作。

我尝试制作custom admin class,但我也没有办法做到这一点。

有没有办法为管理员定义dispatch,或限制管理员显示的网站?

我使用的发货:

def dispatch(self, *args, **kwargs):
    try:
        if get_current_site(self.request).pk != settings.MY_SITE_ID:
            response = render(self.request, 'my_app/404.html')
            response.status_code = 404
            return response
    except Site.DoesNotExist:
        response = render(self.request, 'my_app/404.html', {'site_doesnotexist': True})
        response.status_code = 404
        return response

    return super(MyView, self).dispatch(*args, **kwargs)

1 个答案:

答案 0 :(得分:0)

您可以在启用了admin的网站的“设置”文件中指定其他ROOT_URLCONF。此ROOT_URLCONF将包含管理网址模式。

MY_SITE_ID = 1
ROOT_URLCONF = 'my_project.urls_with_admin'
# my_project/my_project/urls_with_admin.py

from django.conf.urls import url
from django.contrib import admin

from urls import urlpatterns

urlpatterns.append(url(r'^admin/', admin.site.urls))

其他网站使用的基本urls.py文件将省略管理模式,使管理员无法访问。