首页 > 解决方案 > django admin 删除登录页面

问题描述

无论如何要删除 django 管理员登录页面(mySite.com/admin)并使用已登录主站点(mySite.com)的用户会话?

如果需要任何代码,请告诉我添加。

我的中间件settings.py是:

   MIDDLEWARE = [
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
              .
              .
              .
              .
              .
    ]

更新

原因是我希望管理员首先在网站上使用他的帐户登录,然后打开管理页面。其他用户会看到管理员链接,但在单击该链接后,他们会看到一条消息you don't have permission to see or change anything,但他们什么也看不到。我只想myWebsite.com/admin重定向到admin:index用户是否登录,myWebsite.com如果他没有登录。

标签: pythondjango

解决方案


创建一个自定义子类AdminSite并覆盖该login()方法。像这样的东西:

class CustomAdminSite(admin.AdminSite):

    def login(self, request, extra_context=None):
        if not request.user.is_authenticated:
            # not authenticated, redirect to main login page
            login_path = reverse('login')
            return HttpResponseRedirect(login_path)
        if self.has_permission(request):
            # Already logged-in, redirect to admin index
            index_path = reverse('admin:index', current_app=self.name)
            return HttpResponseRedirect(index_path)
        else:
            # Logged in, but doesn't have required permissions
            return render(...)  # render a template with your error message

按照 Django 文档了解如何自定义 AdminSite 类


推荐阅读