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

Django预约网站登录后循环跳转问题求助

Django登录后重定向至booking.html问题解决

排查与修复步骤

1. 修正登录视图的重定向逻辑

在views.py中,确保登录成功后明确指定跳转目标:

from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login

def user_login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            # 直接重定向到booking页面,使用路由name或路径
            return redirect('booking')  # 对应urls.py中booking路由的name值
        else:
            return render(request, 'login.html', {'error': '用户名或密码错误'})
    return render(request, 'login.html')

2. 确认路由与表单配置

  • 在urls.py中确保booking页面的路由已正确定义并设置name:
from django.urls import path
from . import views

urlpatterns = [
    path('login/', views.user_login, name='login'),
    path('booking/', views.booking_view, name='booking'),  # 必须设置name供redirect调用
]
  • 检查login.html的表单action,确保指向正确的登录路由:
<form method="post" action="{% url 'login' %}">
    {% csrf_token %}
    <input type="text" name="username" placeholder="用户名">
    <input type="password" name="password" placeholder="密码">
    <button type="submit">登录</button>
</form>

3. 调整settings.py的登录跳转配置

避免默认配置冲突,明确指定登录成功后的跳转目标:

# 替换默认的LOGIN_REDIRECT_URL,直接指向booking页面路径或使用反向解析
LOGIN_REDIRECT_URL = '/booking/'
# 或使用反向解析(需导入reverse_lazy)
# from django.urls import reverse_lazy
# LOGIN_REDIRECT_URL = reverse_lazy('booking')

# 确保登录页路由配置正确,避免循环
LOGIN_URL = '/login/'

4. 确保booking视图的权限配置

如果booking视图使用了@login_required装饰器,要保证登录状态能被正确识别:

from django.contrib.auth.decorators import login_required

@login_required(login_url='login')  # 与登录路由name一致,或依赖settings中的LOGIN_URL
def booking_view(request):
    # 可添加调试代码确认登录状态
    # print(request.user.is_authenticated)
    return render(request, 'booking.html')

5. 排查循环跳转核心原因

若仍存在循环,优先检查:

  • booking页面是否被错误配置为需要登录,但用户登录状态未被正确保留
  • 重定向路径是否拼写错误(比如误写为/login/导致跳转回登录页)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:17:07