Django登录后重定向至首页失效问题求助
检查登录视图的配置
确认urls.py里是直接使用Django自带的LoginView,正确配置示例:from django.contrib.auth.views import LoginView urlpatterns = [ # 其他路由 path('login/', LoginView.as_view(template_name='registration/login.html'), name='login'), path('', views.home, name='home'), ]要是你的登录模板不在默认的
registration/login.html路径下,必须通过template_name指定,不然可能导致表单提交异常,影响重定向。验证登录表单的
next参数
检查登录模板里的表单是否包含next隐藏字段。Django默认表单会自动生成,但如果是手动写的表单,得加上:<input type="hidden" name="next" value="{{ next }}">要是这个字段被设成了其他值,或者访问登录页时URL带了
?next=xxx参数,都会优先用这个地址重定向,覆盖LOGIN_REDIRECT_URL的配置。检查用户模型的
get_absolute_url方法
不管是自定义用户模型还是默认的User模型,如果定义了get_absolute_url方法,Django会优先用这个方法返回的地址做登录重定向目标,忽略LOGIN_REDIRECT_URL。不需要的话就删掉这个方法,或者确保它返回的是home对应的路径。清除浏览器缓存和会话
旧的缓存会话数据可能导致异常,试试清缓存、重启浏览器,或者用无痕模式测试登录重定向。检查中间件配置
确保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,缺了它们会导致登录状态和重定向逻辑出问题。测试重定向逻辑是否正常
可以临时加个测试视图,验证redirect('home')是否能正常跳转:from django.shortcuts import redirect def test_redirect(request): return redirect('home')把这个视图加到urls.py里访问,如果能正常跳转到首页,说明
home的URL配置没问题,问题出在登录流程的其他环节。
内容的提问来源于stack exchange,提问作者Antonio Amo Sánchez

