只允许django管理员现场ID 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)
答
您可以指定设置的不同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
文件,由其他网站使用,会忽略管理模式,使管理员无法访问。
我不确定我关注,我的所有网站都使用相同的设置文件。所有网站也有相同的观点和模型。我如何为一个网站设置单独的设置文件? – guival
对不起。我以为你使用的是[站点框架](https://docs.djangoproject.com/en/1.11/ref/contrib/sites/),它是Django的一个可选部分,并且每个站点都有单独的设置文件。您还可以使用中间件为每个请求设置'request.urlconf',但我不确定是否可以从中间件调用'get_current_site'。 – evergreen