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

Django默认用户认证登录功能失效求助

解决Django登录无响应的问题

我帮你排查了几个关键问题,应该能解决点击登录毫无反应的情况:

1. 登录模板的HTML语法错误(最直接的触发原因)

你的登录模板里,提交按钮的标签没有闭合,这会导致HTML结构无效,浏览器无法正确识别表单提交动作:

<!-- 错误写法 -->
<input type = "submit" class = "btn btn-primary" value = "Login"

<!-- 修复后 -->
<input type="submit" class="btn btn-primary" value="Login">

先把这个问题修复,这大概率是点击登录没反应的直接原因。

2. 自定义User模型的配置问题

你自定义了User模型,但写法和全局配置都存在问题:

  • 不要直接继承models.User(这是Django的具体用户模型),正确的做法是继承AbstractUser,这样能完整继承默认用户模型的字段和方法,同时保留自定义扩展的能力:
# accounts/models.py
from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    def __str__(self):
        return "@{}".format(self.username)
  • 必须在项目的settings.py里添加配置,明确告诉Django使用你的自定义用户模型:
# settings.py
AUTH_USER_MODEL = 'accounts.User'

注意:如果你的数据库已经完成过迁移(注册功能正常说明已经迁移过),需要重置数据库或者创建新的迁移文件来适配这个修改,否则会出现数据库表结构不匹配的问题。

3. URL路由冲突问题

你的项目urls.py里同时包含了自定义的accounts.urls和Django默认的django.contrib.auth.urls,而django.contrib.auth.urls里也包含login/路径,这会导致路由匹配混乱,建议去掉重复的路由包含:

# 项目urls.py 移除这一行
path('accounts/', include('django.contrib.auth.urls')),

因为你已经自己定义了login、logout和signup的路由,不需要再重复引入默认的auth路由了。

按以上步骤修复后,应该就能正常完成登录流程了。如果还有问题,可以检查浏览器控制台是否有JS报错,或者查看Django终端日志里的错误信息来进一步排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:43:41