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

Django authenticate身份验证始终返回not found该如何解决?

Django authenticate身份验证失败排查及解决方案

错误原因及修复方案

  • 代码缩进错误
    你提供的views.py代码中return语句缩进层级错误,与def loginf(request)同级,不属于函数体内代码,会先触发语法异常。需要先修正缩进,将return语句放在函数内部。
  • 用户创建方式不符合规范
    如果创建用户时直接调用User.objects.create()方法,密码会以明文形式存储在数据库,而authenticate方法会自动将传入的明文密码做哈希运算,再和数据库存储的哈希值对比,必然匹配失败。正确的用户创建方式为调用create_user方法,该方法会自动对密码做pbkdf2_sha256哈希后存储:
from django.contrib.auth.models import User
User.objects.create_user(username="ph", password="mypassword")
  • 用户账号状态异常
    检查对应用户的is_active字段是否为True,账号被禁用时authenticate默认会返回None。你可以在Django shell中执行以下代码校验账号和密码有效性:
python manage.py shell

进入shell后执行:

from django.contrib.auth.models import User
user = User.objects.get(username="ph")
# 输出True说明密码正确,输出False说明数据库存储的密码和输入不匹配
print(user.check_password("mypassword"))
# 输出True说明账号正常可用,输出False说明账号被禁用
print(user.is_active)
  • 认证相关配置缺失
    检查settings.py中的配置项:
  1. 确保INSTALLED_APPS中包含django.contrib.auth和django.contrib.contenttypes两个内置应用
  2. 确保配置了默认的认证后端:
AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
]
  1. 如果你使用了自定义用户模型,需要确认配置了AUTH_USER_MODEL = "你的应用名.自定义用户模型类名",否则认证系统会默认查询内置User表,无法匹配自定义用户表中的数据。
  • authenticate方法参数缺失
    部分Django版本以及自定义认证场景下,需要传入request对象作为第一个参数,修改认证调用代码为:
user = authenticate(request, username=username, password=password)

修正后的完整示例代码

views.py

from django.contrib.auth import authenticate 
from django.shortcuts import render

def loginf(request):
    username = "ph"
    password = "mypassword"
    user = authenticate(request, username=username, password=password)
    if user is not None:
        print(user)
    else:
        print("not found") 
    return render(request,'myapp/login.html')

urls.py

你提供的urls.py代码无逻辑错误,可正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:36:02