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

Django登录功能异常:点击提交后无法跳转至首页

Django登录提交仅触发GET请求的问题修复

核心问题分析

  1. 表单嵌套导致提交行为错误:模板中外层存在未指定method的<form>标签,内层才是带POST方法的表单,但提交按钮属于外层表单,默认触发GET请求,完全没走到内层POST表单的逻辑。
  2. 视图语法错误:request.POST.get['username']误用方括号,正确写法是调用方法用括号request.POST.get('username');另外login函数是直接执行登录操作,不需要赋值给变量。

修复步骤

1. 修正模板表单结构

移除外层多余的<form>标签,确保提交按钮在POST表单内部:

修改后的log-in.html:

{% extends "BizzyCardApp/base.html" %}

{% block content %}

{% load crispy_forms_tags %}

<br>
<br>
<br>
<br>
<br>

<div class="container center oswald" id="grad"  style="border-radius: 10%; width: 300px;">  
    <br>
    <table class="table table-borderless table-responsive container">
      <tbody>
        <tr>
          <div class="mb-3 mt-3">
            <form method="POST">
                {% csrf_token %}
                
                {% for field in form %}
                    <div>
                    <p>{{ field.label }}: <br> {{ field}}</p> 
                    {% for error in field.errors %}
                        <small style="color: red">{{ error }}</small>
                    {% endfor %}
                    </div>
                {% endfor %}
                <div class="d-flex justify-content-center">
                    <button type="submit" class="btn btn-light center text-center">Submit</button>
                </div>
            </form> 
          </div>
        </tr>
      </tbody>
    </table>
    <div class="text-center">
      <a href="/sign-up/" class="link-dark">
          Don't have an account? Sign Up
      </a>
    </div>
  </div>

{% endblock %}

2. 修正视图语法与逻辑

修改login_request视图:

def login_request(request):
    if request.method == 'POST':
        # 修正get方法调用方式
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(username=username, password=password)
        if user is not None:
            # login函数直接执行,无需赋值
            login(request, user)
            messages.success(request, f' welcome {username} !!')
            return redirect('index')
        else:
            messages.info(request, f'Unable to Login now')

    form = AuthenticationForm()
    context = {'form':form}
    return render(request, "BizzyCardApp/log-in.html", context)

验证修复效果

修改后重启服务,点击登录提交按钮会触发POST请求,后端验证通过后将跳转到index页面;验证失败时,会停留在登录页并显示提示信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:10:40