无法在django中使用CBV登录自定义用户

时间:2018-02-27 11:14:55

标签: django python-3.x django-forms django-class-based-views django-custom-user

在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()

仅供参考,这是一个自定义模型,并有一个单独的用户管理器。 每当我使用电子邮件和密码字段提交登录模板时,它会返回一个表单错误,指出电子邮件和密码在匹配时不匹配。

1 个答案:

答案 0 :(得分:0)

Django具有处理登录的身份验证viewsforms。使用它们更容易,而不是自己编写。

如果您必须编写自己的观看次数和表单,则必须检查用户的密码,然后将其登录。有关详细信息,请参阅how to log a user in上的文档。