Python 新用户可以在注册后登录,直到我在管理控制台中手动更改密码

Python 新用户可以在注册后登录,直到我在管理控制台中手动更改密码,python,django,Python,Django,我不知道用户登录时发生了什么,当用户注册时,当我检查管理控制台时,所有内容都保存在数据库中,但是当用户想要登录时,它不会验证密码。但是,如果我转到管理控制台,手动更改用户密码,甚至更改为用户注册时使用的相同密码,那么用户将成功登录。我尝试了10次,在手动更改密码之前,它不会对用户进行身份验证。我希望很快得到回复,因为我已经分别检查了我的代码`下面是我的观点.py。多谢各位 来自django.contrib.auth.models导入用户 从django.shortcuts导入渲染 从django

我不知道用户登录时发生了什么,当用户注册时,当我检查管理控制台时,所有内容都保存在数据库中,但是当用户想要登录时,它不会验证密码。但是,如果我转到管理控制台,手动更改用户密码,甚至更改为用户注册时使用的相同密码,那么用户将成功登录。我尝试了10次,在手动更改密码之前,它不会对用户进行身份验证。我希望很快得到回复,因为我已经分别检查了我的代码`下面是我的观点.py。多谢各位

来自django.contrib.auth.models导入用户
从django.shortcuts导入渲染
从django.http导入HttpResponse,HttpResponseRedirect
从newapp导入表单
从django.contrib.auth导入身份验证、登录、注销
从django.url反向导入
从django.contrib.auth.decorators导入所需的登录名
def userreg(请求):
form=forms.UserInfoForm()
otherform=forms.UserProfileInfoForm()
注册=假
newname=False
如果request.method==“POST”:
form=forms.UserInfoForm(data=request.POST)
otherform=forms.UserProfileInfoForm(数据=request.POST)
如果form.is\u valid()和其他form.is\u valid():
newname=form.cleaned\u data.get('first\u name'))
user=form.save()
user.set_密码(user.password)
user.save()
profile\u form=otherform.save(commit=False)
profile\u form.user=用户
如果request.FILES中的“profile_pic”:
profile\u form.profile\u pic=请求.FILES['profile\u pic']
profile_form.save()
注册=真
返回呈现(请求'newapp/register.html',上下文={'form':form,'otherform':otherform,'newname':newname,'registed':registed})
def用户登录(请求):
invalidlogin=False
如果request.method==“POST”:
username=request.POST['username']
password=request.POST['password']
用户=验证(请求,用户名=用户名,密码=密码)
打印(用户)
如果用户不是无:
如果user.u处于活动状态:
登录(请求、用户)
返回HttpResponseRedirect(反向('index'))
其他:
return HttpResponse(“对不起,您的帐户未激活”)
其他:
invalidlogin='哎呀!您的用户名或密码不正确'
打印(f“{username}尝试使用{password}登录”)
返回呈现(请求'newapp/login.html',上下文={'invalidlogin':invalidlogin})
其他:
返回呈现(请求'naijadict/login.html')
返回呈现(请求'newapp/login.html')
@需要登录
def用户注销(请求):
注销(请求)
返回HttpResponseRedirect(反向('index'))

我希望您的表单上有密码字段。要设置输入的密码,请执行以下更改:

password=form.cleaned\u data.get('password'))
user.set_密码(password)

希望这能起作用。

set\u password=当原始密码为None时,密码将设置为不可用密码,就像使用set\u unusable\u password()一样。你正在传递一个无密码。哇,谢谢你,老板,它工作得很好,这实际上解决了它。