You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django登录重定向异常:无法跳转至自定义页面

解决Django登录后跳转到默认accounts/profile的问题

你的问题核心是登录请求实际走了Django内置的LoginView,而非你自定义的login_view,导致重定向逻辑不符合预期,另外视图里修改全局配置的操作完全无效。以下是具体修复方案:

方案一:使用自定义的login_view(推荐)

你已经写了带错误提示的自定义登录逻辑,只需要让表单提交到这个视图即可:

  1. 修改urls.py,将login/路径绑定到自己的视图:
from django.urls import path
from django.contrib.auth import views as auth_views
from . import views

urlpatterns = [
    path('login/', views.login_view, name='login'),  # 替换内置LoginView为自定义视图
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
    path('phase1/', views.phase1_view, name='phase1'),
]
  1. 删除phase1_view中无效的配置代码:
# 删掉这行,完全没用
# settings.LOGIN_REDIRECT_URL = '/myapp/phase1/'

你的自定义login_view里已经在验证成功后执行return redirect('phase1'),这样登录后就会直接跳转到phase1页面。

方案二:继续使用Django内置LoginView

如果想保留内置视图,需要正确配置重定向目标:

  1. 在settings.py中添加正确的重定向配置:
LOGIN_URL = 'login'
LOGIN_REDIRECT_URL = 'phase1'  # 使用URL名称比硬编码路径更可靠,也可以写'/myapp/phase1/'
  1. 或者直接给内置LoginView指定成功跳转地址:
path('login/', auth_views.LoginView.as_view(
    template_name='myapp/login.html',
    success_url='/myapp/phase1/'  # 或者用reverse_lazy('phase1')避免加载顺序问题
), name='login'),

关键错误说明

  • 你在phase1_view中修改settings.LOGIN_REDIRECT_URL是无效的:全局配置应该在settings.py中设置,且登录重定向的逻辑在登录完成前就已经执行,视图里修改根本赶不上时机。
  • 表单的action指向{% url 'login' %},但原来的urls里这个名称绑定的是内置LoginView,导致你的自定义login_view根本没被调用,所以你写的redirect('phase1')从来没执行过。

内容的提问来源于stack exchange,提问作者Trives Dixit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 23:32:01