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

如何让Django使用LoginRequiredMixin登录后重定向到原请求页面

问题解决说明

问题根因

  • 自定义LoginView的get_context_data方法调用父类时未传入**kwargs,导致模板上下文丢失next参数,表单提交时隐藏的next字段值为空,Django就会跳转默认的/accounts/profile地址
  • LoginView的表单属性配置错误,Django内置LoginView识别的表单配置项是authentication_form,你当前写的form = AuthenticationForm不生效,且直接将表单类传入上下文而非实例化后的表单对象,可能导致校验逻辑异常

修复代码

1. 修改LoginView代码

class LoginView(SearchMixin, auth_views.LoginView):
    template_name = 'VMwareInventory/Registration/login.html'
    # 改用LoginView识别的表单配置属性
    authentication_form = AuthenticationForm

    def get_context_data(self, **kwargs):
        # 调用父类方法时传入**kwargs,保留next等默认上下文参数
        context = super(LoginView, self).get_context_data(**kwargs)
        # 直接使用父类已经实例化好的表单对象,避免校验失效
        context['login_form'] = context['form']
        return context

2. 可选补充配置

如果需要设置无next参数时的默认跳转地址,在settings.py中添加如下配置即可:

LOGIN_REDIRECT_URL = '/'

上述配置的地址可根据你的实际首页地址修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:09:03