在Django中尝试使用基于类的视图时,我无法让自定义用户登录。
以下是我的观点:
class Loginview(FormView):
form_class = LoginForm
template_name = 'login.html'
def get(self, request, *args, **kwargs):
return render(request, 'login.html', {'form': LoginForm})
def form_valid(self, form):
return redirect('dashboard')
def form_invalid(self, form):
return render(self.request, 'login.html', {'form': form})
我的表格:
class LoginForm(ModelForm):
class Meta:
model = Company
fields = ['email', 'password']
我的模特:
class Company(AbstractBaseUser, PermissionsMixin):
name = models.CharField(max_length=50)
address = models.CharField(max_length=50)
phone = models.CharField(max_length=50)
date_joined = models.DateTimeField(auto_now_add=True)
email = models.EmailField(max_length=50, unique=True)
is_staff = models.BooleanField(default=True)
email_confirmed = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
objects = UserManager()
仅供参考,这是一个自定义模型,并有一个单独的用户管理器。 每当我使用电子邮件和密码字段提交登录模板时,它会返回一个表单错误,指出电子邮件和密码在匹配时不匹配。
答案 0 :(得分:0)
Django具有处理登录的身份验证views和forms。使用它们更容易,而不是自己编写。
如果您必须编写自己的观看次数和表单,则必须检查用户的密码,然后将其登录。有关详细信息,请参阅how to log a user in上的文档。