【发布时间】:2021-03-21 20:27:06
【问题描述】:
我正在为我的应用程序登录,使用自定义用户模型和表单,使用电子邮件作为模型中的用户名字段,并在登录过程中询问电子邮件和密码。问题是在我看来,在身份验证方法中没有找到匹配项,所以我无法登录我的用户。代码如下:
用户模型
class usuarios(AbstractBaseUser):
nombre = models.CharField(max_length=32, null=False)
apellido = models.CharField(max_length=32, null=False)
correo = models.EmailField(null=False, unique=True)
password = models.CharField(max_length=200, null=False)
fecha_nacimiento = models.DateField(null=False)
USERNAME_FIELD = 'correo'
objects = userManager()
def __str__(self):
return self.correo+' '+self.nombre+' '+self.apellido
登录表单
class loginForm(forms.Form):
correo = forms.EmailField()
password = forms.CharField(
widget=forms.PasswordInput()
)
class Meta:
model = usuarios
fields = ("correo","password")
登录视图
class usuario_login(FormView):
template_name = "user/usuario_login.html"
form_class = loginForm
success_url = reverse_lazy('user:crear')
def form_valid(self, form):
usuario = authenticate(
username=form.cleaned_data['correo'],
password=form.cleaned_data['password']
)
if usuario is not None:
login(self.request, usuario)
else:
return HttpResponseRedirect(
reverse_lazy('user:login')
)
return super(usuario_login, self).form_valid(form)
如您所见,在登录视图中,我尝试在登录之前验证用户名(即电子邮件)和密码。感谢您的帮助,然后感谢您。
【问题讨论】:
标签: django