Django登录表单提交后跳转至不存在的login/login路径问题求助
问题排查与修复方案
1. 表单提交路径错误(跳转login/login的核心原因)
当前登录页访问路径为/login/,表单action属性填写的是相对路径login,浏览器会自动将相对路径拼接在当前访问路径末尾,最终提交地址就变成了不存在的/login/login。
可任选一种方案修复:
- 直接写绝对路径:将form标签改为
<form action="/login/" method="post"> - 更规范的Django反向解析写法:将form标签改为
<form action="{% url 'task:login' %}" method="post">
2. 视图函数请求方法判断逻辑错误
Django的HttpRequest.method属性返回的是全大写的请求方法名,你当前写的if req.method=='post'永远不会命中,就算路径修改正确,提交后也会直接重新渲染登录页,不会走登录校验逻辑。
修复方案:将判断条件改为 if req.method == 'POST'
可选优化建议
- 用
req.POST.get('username', '')替代直接取req.POST['username'],避免参数缺失时直接抛出异常 - 登录失败重定向时可以携带错误提示参数,方便前端给用户展示失败原因
内容的提问来源于stack exchange,提问作者Mont
相关产品推荐
相关产品推荐

