1

我只想显示 id 为 1 的站点的管理员。在其他视图中,我已经在 中定义了这个dispatch,但我还没有找到为管理员执行此操作的方法。

我尝试制作一个自定义管理类,但我也没有看到这样做的方法。

有没有办法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)
4

1 回答 1

0

ROOT_URLCONF您可以在启用管理员的站点的设置文件中指定不同的设置。这ROOT_URLCONF将包括管理员 url 模式。

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文件将省略管理员模式,使管理员无法访问。

于 2017-10-05T15:39:07.733 回答