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



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

from django.contrib.auth.models import User
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from newapp import forms
from django.contrib.auth import authenticate, login, logout
from django.urls import reverse
from django.contrib.auth.decorators import login_required

def userreg(request):
form = forms.UserInfoForm()
otherform = forms.UserProfileInfoForm()
registered = False
newname = False
if request.method == "POST":
form = forms.UserInfoForm(data=request.POST)
otherform = forms.UserProfileInfoForm(data=request.POST)
if form.is_valid() and otherform.is_valid():
newname = form.cleaned_data.get('first_name')
user = form.save()
user.set_password(user.password)
user.save()
profile_form = otherform.save(commit=False)
profile_form.user = user
if 'profile_pic' in request.FILES:
profile_form.profile_pic = request.FILES['profile_pic']
profile_form.save()
registered = True

return render(request, 'newapp/register.html', context={'form': form, 'otherform':otherform, 'newname':newname, 'registered':registered})


def userlogin(request):
invalidlogin = False
if request.method == "POST":
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
print(user)
if user is not None:
if user.is_active:
login(request,user)
return HttpResponseRedirect(reverse('index'))
else:
return HttpResponse("Sorry Your Account is not active")
else:
invalidlogin = 'OOPS! Your Username or Password is incorrect'
print(f"{username} tried to login with {password}")
return render(request, 'newapp/login.html', context={'invalidlogin': invalidlogin})
else:
return render(request, 'naijadict/login.html')
return render(request, 'newapp/login.html')

@login_required
def userlogout(request):
logout(request)
return HttpResponseRedirect(reverse('index'))

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

password = form.cleaned_data.get('password')
user.set_password(password)

希望这有效。

最新更新