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

Django退出登录后仍显示个人资料页,如何实现未登录重定向至登录页?

实现未登录用户访问个人资料页自动重定向至登录页

你已经在视图函数profile_page和edit_bio上使用了@login_required装饰器,但还需要完成以下配置才能让重定向逻辑正常生效:

1. 在settings.py中配置登录跳转地址

Django的login_required装饰器需要明确登录页面的路由标识,在项目的settings.py文件末尾添加以下配置:

LOGIN_URL = 'login'  # 对应urls.py中登录路由的name值

2. 优化登录成功后的跳转逻辑

当前login_user视图中登录成功后使用了硬编码的跳转地址,建议改为使用URL名称,适配不同部署环境:
修改views.py中的login_user函数:

def login_user(req):
    if req.method == 'POST':
        form = AuthenticationForm(data=req.POST)
        if form.is_valid():
            user = form.get_user()
            login(req, user)
            # 使用路由name跳转首页,替代硬编码地址
            return redirect('home')
    else:
        form = AuthenticationForm()
    return render(req, 'loginpage.html', {'form': form})

3. (可选)完善logout视图的兼容性

当前logout_user视图仅处理POST请求,可修改为支持GET请求,提升操作灵活性:

def logout_user(req):
    logout(req)
    return redirect('home')

逻辑说明

  • @login_required装饰器会自动检查请求中的用户状态:
    • 若用户未登录,会直接重定向到LOGIN_URL指定的登录页面,同时在URL后附加?next=/profile/参数,登录成功后会自动跳转回之前访问的个人资料页
    • 若用户已登录,则正常执行视图函数的业务逻辑

完成以上配置后,未登录用户访问/profile/或/profile/edit/时,会被自动引导至登录页面,登录成功后将返回目标页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:37:50