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

Django使用LoginRequiredMixin时如何实现登录后跳转至目标页面

解决方案

你遇到的问题本质是登录流程没有正确传递LoginRequiredMixin自动生成的next跳转参数,按以下步骤排查即可解决:

  • 第一步:修改登录页模板,添加next隐藏字段
    你的登录页表单内需要新增隐藏输入项,用来接收从受限页面跳转过来时携带的next参数,如果你用的是Django内置的登录视图,完成这一步即可生效:
    <form method="post" action="{% url 'login' %}">
        {% csrf_token %}
        <!-- 保留原有用户名、密码输入框逻辑 -->
        <input type="hidden" name="next" value="{{ request.GET.next }}">
        <button type="submit">登录</button>
    </form>
    
  • 第二步:自定义登录视图需补充next跳转逻辑
    如果你没有使用Django内置的auth_views.LoginView,而是自己实现了登录视图,需要在登录验证成功后优先跳转next参数对应的地址,示例逻辑如下:
    from django.shortcuts import redirect, reverse
    
    def login_view(request):
        if request.method == 'POST':
            form = LoginForm(request.POST)
            if form.is_valid():
                # 保留原有用户校验、登录执行逻辑
                # 优先级:POST参数next > GET参数next > 全局默认跳转地址
                next_url = request.POST.get('next', request.GET.get('next', reverse('home')))
                return redirect(next_url)
        # 保留原有其他逻辑
    
  • 第三步:TaskListView无需额外修改
    LoginRequiredMixin默认的redirect_field_name就是next,你不需要额外添加该属性,也不需要重写dispatch方法。前两步配置完成后,未登录用户访问/tasks/时会自动跳转到/login/?next=/tasks/,登录成功后就会直接跳转任务列表页,全局的LOGIN_REDIRECT_URL = 'home'也不需要修改,只会在无next参数的场景下生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 15:36:02