虚拟主机环境下Django登录管理后台出现404错误求助
解决Django Admin登录后出现404的问题
嘿,我之前也踩过这个一模一样的坑,咱们一步步来排查解决:
1. 先检查登录跳转路径配置
Django默认在登录成功后会跳转到/accounts/profile/,如果你的项目里没配置这个路由,直接就会404。这是最常见的原因!
你只需要在项目的settings.py里添加一行配置,指定登录后跳回admin后台:
# 直接写路径 LOGIN_REDIRECT_URL = '/admin/' # 或者更规范的用reverse_lazy(推荐) from django.urls import reverse_lazy LOGIN_REDIRECT_URL = reverse_lazy('admin:index')
2. 核对admin的URL配置是否正确
你说urls.py看起来没问题,但再仔细核对下结构:
如果你用的是Django 2.0+的path语法:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), # 你的其他路由... ]
如果是旧版的url语法(对应你代码里的from django.conf.urls import include, url):
from django.contrib import admin from django.conf.urls import include, url urlpatterns = [ url(r'^admin/', admin.site.urls), # 你的其他路由... ]
确保admin.site.urls确实挂载在/admin/路径下,没有拼写错误。
3. 确认必要的中间件没丢
登录和会话处理依赖几个关键中间件,去settings.py的MIDDLEWARE列表里检查,确保包含这些:
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', # 处理会话 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', # 处理认证 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
少了SessionMiddleware或AuthenticationMiddleware的话,登录状态根本没法正常维持,大概率会出跳转问题。
4. 清掉浏览器缓存和Cookie试试
有时候浏览器缓存的旧会话、过期Cookie会搞出奇怪的跳转bug,试试清除当前站点的缓存和Cookie,或者用隐私模式打开页面再登录测试。
5. 看看调试页面的详细信息
如果你的项目DEBUG = True,404页面会显示所有尝试匹配的路由规则。仔细看看页面上显示的“Requested URL”是什么,是不是登录后跳去了某个你没配置的路径——这能帮你快速定位问题根源。
内容的提问来源于stack exchange,提问作者BrianCas
相关产品推荐
相关产品推荐

