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

Django登录跳转异常:登录后始终返回登录页求助

解决Django登录后循环跳转回登录页的问题

看起来你遇到了典型的URL配置冲突导致的循环跳转问题,我来帮你一步步梳理和解决:

问题根源分析

你的配置里有两个关键问题导致了无限循环:

  1. URL路径重叠:项目Inventory/urls.py中url(r'^home/', include('myapp.urls'))会把所有/home/开头的请求转发给myapp的urls。而myapp的urls里url(r'^$', login, ...)会匹配/home/这个路径(因为include后,myapp处理的是home/之后的空字符串),所以访问/home/直接进入登录页。
  2. 重定向路径错误:LOGIN_REDIRECT_URL = 'home/'让登录成功后跳转到/home/,而这个路径又指向登录视图,形成闭环循环。

解决方案步骤

1. 调整URL配置,避免路径冲突

修改项目Inventory/urls.py,把home路径直接映射到视图,而非通过include转发:

from django.conf.urls import url, include
from django.contrib import admin
from myapp import views  # 导入myapp的视图

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^myapp/', include('myapp.urls')),
    url(r'^home/$', views.home, name='home'),  # 直接绑定home路径到视图
]

然后修改myapp/urls.py,给登录视图单独设置路径并命名:

from django.conf.urls import url
from . import views
from django.contrib.auth.views import login

urlpatterns = [
    # 给登录视图设置独立路径并命名
    url(r'^login/$', login, {'template_name': 'myapp/login.html'}, name='login'),
]

2. 修正登录重定向配置

在项目settings.py中,把LOGIN_REDIRECT_URL改为URL的命名(推荐用命名URL而非硬编码路径,更稳定):

LOGIN_REDIRECT_URL = 'home'

3. 确保home视图需要登录访问

在myapp/views.py中给home视图添加@login_required装饰器,这样未登录用户访问home会自动跳转到登录页,登录后正确进入home:

from django.shortcuts import render
from django.contrib.auth.decorators import login_required

@login_required
def home(request):
    # 在这里获取你通过admin创建的Model数据,比如:
    # from .models import YourInventoryModel
    # inventory_items = YourInventoryModel.objects.all()
    # return render(request, 'myapp/home.html', {'items': inventory_items})
    return render(request, 'myapp/home.html')

可选:用Django 2.0+的path语法(如果你的版本支持)

如果你的Django版本是2.0或以上,建议使用更简洁的path替代url:
项目urls.py:

from django.urls import path, include
from django.contrib import admin
from myapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/', include('myapp.urls')),
    path('home/', views.home, name='home'),
]

myapp/urls.py:

from django.urls import path
from . import views
from django.contrib.auth.views import LoginView

urlpatterns = [
    path('login/', LoginView.as_view(template_name='myapp/login.html'), name='login'),
]

这样调整后,登录成功后就会正确跳转到home页面,不会再循环回到登录页了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:30:56