Django错误的用户名,自定义用户模型的密码



我使用"OneToOneField"创建了自定义用户模型。我已经创建了注册和登录系统,但只有注册有效,我可以注册新用户,但当我尝试使用创建的用户登录时,Django不允许我通过显示自定义消息"用户名或密码错误"来登录。我已经仔细检查了用户名和密码,它是正确的,但Django仍然不允许我登录。

这是我的密码。

型号.py

class Vendor(models.Model):
user = models.OneToOneField(User, on_delete = models.CASCADE)
phone_number = models.CharField(max_length = 12, blank = True)

表单.py

class SignInForm(forms.Form):
username = forms.CharField(max_length = 20, widget = forms.TextInput(attrs = {'class': 'form-control', 'placeholder': 'Username'} ))
password = forms.CharField(max_length = 15, widget = forms.PasswordInput(attrs = {'class': 'form-control', 'placeholder': 'Password'} ))

视图.py

form = self.form(request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(username = username, password = password)
if user:
if user.is_active:
login(request, user)
return redirect('dashboard')
else:
messages.error(request, 'Your email address is not verified. Please verify it')
else:
messages.error(request, 'Username or password is wrong')
form = LoginForm(request.POST or None)
context = {
"form":form
}

if form.is_valid():
print(form.cleaned_data)
username = form.cleaned_data.get("username")
password = form.cleaned_data.get("password")
user = authenticate(request, username=username, password=password)
if user is not None:
print(request.user.is_authenticated)
login(request, user)
context['form'] = LoginForm()
return redirect("/")
else:
print('Error')
return render(request, "MainApp/login.html", context)
  1. 您需要为表单添加上下文dict
  2. 使用is not None条件而不是if user
  3. 此行用于删除用户提交表单context['form'] = LoginForm()后输入的密钥

我相信这可能是你的问题的解决方案

最新更新