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

Django启动服务器默认显示登录页失败问题求助

Django默认显示登录页问题修复

问题

在Django框架中,启动服务器后希望默认展示登录页面,但实际要么跳转到首页,要么出现页面无法工作的错误。

现有代码

views.py

def loginPage(request):
    if request.user.is_authenticated:
        return redirect('/')
    else:
        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)
                return redirect('/')
            else:
                messages.info(request, 'Username OR password is incorrect')

        context = {}
        return render(request, 'accounts/login.html', context)

urls.py

urlpatterns = [
   
    path('', views.loginPage, name="login"),
    path('index/',views.index,name="index"),
    
]

问题原因及解决办法

1. 循环重定向导致页面报错

你的loginPage视图中,当用户已登录时会重定向到/,但/对应的就是loginPage视图,这会触发无限循环,浏览器因此报错“页面无法工作”。同时,登录成功后也重定向到/,导致已登录用户始终停留在登录页逻辑里,出现跳转异常。

修复:
把已登录和登录成功后的重定向目标改成首页的index路由:

def loginPage(request):
    if request.user.is_authenticated:
        return redirect('index')  # 用路由名称或直接写'/index/'都可以
    else:
        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)
                return redirect('index')  # 同样修改这里
            else:
                messages.info(request, '用户名或密码错误')

        context = {}
        return render(request, 'accounts/login.html', context)

2. 额外检查项

  • 确认accounts/login.html模板文件存在于正确的模板目录下,Django能正常读取到该文件,避免因模板缺失导致页面加载失败。
  • 如果要显示登录错误提示,需要在login.html模板中添加消息渲染代码:
    {% if messages %}
        {% for message in messages %}
            <div class="error-message">{{ message }}</div>
        {% endfor %}
    {% endif %}
    
  • 检查urls.py中的index视图是否正确定义,确保views.index存在且能正常返回首页内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:57:21