我正在为django进行密码重置,但无论我尝试重置都不起作用。所以我检查了我的表格处理的数据,我知道这些数据必须是真的。它仍然无法正常工作。所以我试图在django shell中进行身份验证。这就是发生的事。
壳:
In [11]: user = User.objects.first()
In [12]: password = "bier"
In [13]: user.set_password(password)
In [14]: i = authenticate(username=user.username, password=password)
In [15]: i
i returns None
有人知道造成这种情况的原因是什么?
答案 0 :(得分:3)
您应该保存用户对象
user.save()
根据文档,用户对象未保存:
"将用户的密码设置为给定的原始字符串,并负责密码散列。不保存用户对象。"
https://docs.djangoproject.com/en/1.8/ref/contrib/auth/#django.contrib.auth.models.User.set_password
答案 1 :(得分:0)
from django.contrib.auth.models import User
u = User.objects.get(username='john')
u.set_password('new password')
u.save()
http://jsfiddle.net/cjqvnnho/1/ https://docs.djangoproject.com/en/dev/topics/auth/default/#changing-passwords