尝试登录 Django 管理面板时出现身份验证错误,无法注销

Authentication error while trying to login to Django admin panel, cannot log out

我有两个问题,第二个与第一个有关,确实可能是原因。

我正在开发一个简单的 Django 项目,我使用(部分完成的)登录表单使用非超级用户登录。它重定向到登录页面,但是当我继续 localhost/admin 时,出现了这个错误。

You are authenticated as 3rdMayTest (this is the username), but are not authorized to access this page. Would you like to login to a different account?

问题是,我尝试刷新页面,单击退出页面,然后重新启动服务器,但错误仍然存​​在,我不知道如何注销才能继续。

相关issue在SETTINGS.py(for the project)文件中,我添加了这个,希望在提交登录表单数据时能够登录并重定向到主页,但它会导致上述错误,并重定向到登录页面。

LOGIN_REDIRECT_URL = 'socialmedia-home'

socialmedia-home,据我所知,是我给的名字,它在 socialmedia app/urls.py 文件

#THIS IS THE SOCIAL MEDIA URLS ..not the root directory URLS
from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='socialmedia-home'),
    path('about/', views.about, name='socialmedia-about'),
    #path('login/', views.login, name='socialmedia-login'),  
]

我的问题是: 1. 问题 2 似乎以某种方式导致了这个问题,因为在提交登录表单后页面没有正确重定向。但是在转到 localhost/admin 时,如何删除仍然存在的错误? 2. 如何解决明显导致表单无法正确提交或重定向到正确位置的问题2?

您看到此错误的原因是您以非员工用户身份登录,没有管理员权限。通常,您的主页上应该有一个 "logout" 按钮,以便用户可以注销。如果您还没有,只需按照 here 所述添加即可。这是一个非常简单的视图,您可以将其添加到您的网址(例如 path('logout/', views.logout))。

但是您也可以使用具有员工权限的用户(例如您的超级用户)登录该管理员登录页面,这将自动注销您的非员工用户并以员工身份登录。管理员有一个 'logout' link。

问题2:LOGIN_REDIRECT_URL默认使用django.contrib.auth提供的LoginView。您的自定义 login 视图是否在使用它?