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

Django登录功能异常咨询:点击登录后页面未跳转至首页

问题解决:登录后页面未跳转,停留在登录页

问题分析

从终端日志和浏览器地址栏可见,登录请求使用的是GET方法,账号密码等参数直接暴露在URL中,页面返回状态码200仅代表重新加载了登录页,未执行登录验证逻辑。核心原因是表单提交方法配置错误,导致Django默认登录视图未处理登录请求。

修复步骤

修改login.html中的表单提交方法,将method="get"改为method="post":

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

{% block title %}
  Login Here
{% endblock title %}

{% load crispy_forms_tags %}

{% block content %}
  <form class="from-group" method="post">
    {% csrf_token %}
    {{form | crispy}}
    <button type="submit" class="btn btn-success">Login</button>
    <p>Don't have an account? Create one <a href="/register">Here</a></p>
  </form>
{% endblock content %}

原因说明

  1. HTTP方法用途:GET方法用于获取资源,不适合提交密码这类敏感信息,且Django的django.contrib.auth登录视图仅处理POST请求来验证用户凭证。
  2. CSRF令牌验证:CSRF令牌用于防范跨站请求伪造,只有POST请求会正确携带并验证该令牌,GET请求中令牌会被忽略,无法完成登录流程。
  3. 跳转逻辑触发:只有当登录验证通过后,Django才会根据settings.py中LOGIN_REDIRECT_URL = "/"的配置跳转到首页,GET请求未触发登录验证,自然不会执行跳转。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:01:26