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

Django登录认证始终返回None问题求助

问题分析与解决方案

核心问题:注册时密码未正确存储

你的登录失效最可能的原因是注册阶段密码没有被正确哈希存储,导致登录时authenticate无法匹配到用户。

Django AbstractUser 的 create_user 方法签名为:

create_user(username, email=None, password=None, **extra_fields)

你当前的注册代码中:

user = User.objects.create_user(username,password)

这里把password当成了第二个参数传递,但该位置对应的是email字段,密码实际没有被传入正确的参数位。最终用户的密码字段没有被哈希处理,反而把密码值赋给了email,导致登录时用真实密码去验证自然失败。

修复代码:
显式指定参数名,确保密码被正确传入:

user = User.objects.create_user(username=username, password=password)

其他潜在问题排查

  1. 退出函数正确性
    确保退出时调用Django官方的logout方法,彻底清理session:
from django.contrib.auth import logout

def dlogout(request):
    logout(request)
    return redirect('login')
  1. 表单字段一致性
    检查登录模板的表单输入框,确保name属性和视图中request.POST获取的键完全一致:
<form method="POST">
    {% csrf_token %}
    <input type="text" name="username" placeholder="用户名">
    <input type="password" name="password" placeholder="密码">
    <button type="submit">登录</button>
</form>
  1. 移除不必要的CSRF豁免
    注册函数中的@csrf_exempt建议移除,同时在注册模板中添加{% csrf_token %},避免CSRF防护缺失导致的session异常。

  2. 验证密码存储状态
    可以在注册后打印用户的password字段,正常情况下应该是类似pbkdf2_sha256$...的哈希值,如果是明文,说明密码未被正确处理,确认上述参数问题是否修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:10:30