Django登录后未按LOGIN_REDIRECT_URL跳转首页问题求助
问题根因
你的路由、settings重定向配置本身没有错误,登录后不跳转的核心原因出在登录模板的表单写法上,两个错误导致表单根本没有触发正常的POST登录认证流程:
{% csrf_token %}标签、表单错误渲染代码全部写在了<form>标签外部,Django无法正常完成表单校验、字段取值逻辑<form>标签属性写法完全错误:当前代码写的是<form class="p-4 border rounded", submit= 'POST'>,表单提交方法的正确属性是method="POST",你错写了不存在的submit属性,会导致表单默认以GET方式提交请求,根本不会触发LoginView的认证处理逻辑,自然不会执行重定向,也不会返回表单校验错误。
修复方案
调整login.html的模板结构,修正表单属性,核心修改点如下:
- 将CSRF标签、表单错误输出代码全部移动到
<form>标签内部 - 修正form标签的属性,删除错误的
submit='POST'写法,添加标准的method="POST"属性,去掉属性间多余的逗号
修正后的核心模板代码:
<section class="site-section"> <div class="container"> <div class="row"> <div class="col-lg-6"> <h2 class="mb-4">Log In To JobBoard</h2> <!-- 修正form标签属性 --> <form class="p-4 border rounded" method="POST"> <!-- 表单校验、CSRF标签移入form内部 --> {% csrf_token %} {{ form.non_field_errors }} <!-- DEBUG --> {% for field in form %} {% if field.errors %}{{ field.html_name }}: {{ field.errors }}{% endif %} {% endfor %} <div class="row form-group"> <div class="col-md-12 mb-3 mb-md-0"> <label class="text-black" for="fname">Username</label> {{ form.username }} </div> </div> <div class="row form-group mb-4"> <div class="col-md-12 mb-3 mb-md-0"> <label class="text-black" for="fname">Password</label> {{ form.password }} </div> </div> <div class="row form-group"> <div class="col-md-12"> <input type="submit" value="Log In" class="btn px-4 btn-primary text-white"> </div> </div> </form> </div> </div> </div> </section>
验证说明
修改完成后重启Django开发服务器,使用正常可登录的账号凭据提交表单,LoginView会正常完成身份认证,按照LOGIN_REDIRECT_URL的配置跳转到home_page对应的首页路径。如果输入的账号密码有误,你预置的错误输出代码也会正常在表单区域渲染报错信息。
内容的提问来源于stack exchange,提问作者Arkham007
相关产品推荐
相关产品推荐

