Django登录页面验证后不跳转且无法获取账号密码问题求助
Django登录表单提交无响应、无法获取POST参数的解决方法
问题根源及修复步骤:
表单提交目标错误
你的login.html中表单的action="/"会把请求发送到首页视图,但首页视图index会检查用户是否登录,未登录状态下直接重定向回登录页,导致处理登录逻辑的loginuser视图根本接收不到POST请求,所以终端没有打印参数。
修正表单的提交地址,改为指向登录视图:<form class="container my-5" action="{% url 'login' %}" method="post">或者直接写硬路径
/login,推荐用{% url 'login' %},后续修改URL配置时无需改动模板。视图函数缩进错误
views.py里的loginuser函数存在缩进问题,最后一行return render(request,'login.html')的缩进层级错误,Python对缩进严格,这会导致代码逻辑异常。修正后的完整函数:def loginuser(request): if request.method == "POST": username = request.POST.get('username') password = request.POST.get('password') print(username, password) user = authenticate(username=username, password=password) if user is not None: login(request, user) return redirect("/") else: return render(request, 'login.html') # 处理GET请求 return render(request, 'login.html')
验证操作:
- 保存所有修改的文件
- 重启Django开发服务器
- 访问登录页面,输入正确的用户账号密码提交,此时终端会打印出用户名和密码,且成功跳转到首页。
内容的提问来源于stack exchange,提问作者Jani Naiya
相关产品推荐
相关产品推荐

