0

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

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

4

1 回答 1

0

Django 具有处理登录的身份验证视图表单。使用它们比自己编写更容易。

如果您必须编写自己的视图和表单,那么您必须检查用户的密码然后登录。有关更多信息,请参阅有关如何登录用户的文档。

于 2018-02-27T12:53:01.330 回答