2017-10-05 86 views
1

我想只顯示管理員爲我的網站與ID 1. 在其他意見我已經在dispatch定義這個,但我還沒有找到一種方法來做到這一點管理員。只允許django管理員現場ID 1

我試過製作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) 

回答

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文件,由其他網站使用,會忽略管理模式,使管理員無法訪問。

+0

我不確定我關注,我的所有網站都使用相同的設置文件。所有網站也有相同的觀點和模型。我如何爲一個網站設置單獨的設置文件? – guival

+0

對不起。我以爲你使用的是[站點框架](https://docs.djangoproject.com/en/1.11/ref/contrib/sites/),它是Django的一個可選部分,並且每個站點都有單獨的設置文件。您還可以使用中間件爲每個請求設置'request.urlconf',但我不確定是否可以從中間件調用'get_current_site'。 – evergreen

相關問題