Django - 只有管理员帐户才能登录

时间:2017-11-29 11:45:59

标签: django backend

我为用户创建了一个登录我网站的功能。但是,它仅在我使用管理员帐户登录时才有效,否则无法检测到已存在的注册用户并说“这是用户不存在”。

以下是代码:

class LoginForm(forms.Form):

    username = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput)

    def clean(self, *args, **kwargs):
        username = self.cleaned_data["username"]
        password = self.cleaned_data["password"]

        if username and password:
            user = authenticate(username=username, password=password)
            if not user:
                raise forms.ValidationError("This is user does not exist")
            if not user.check_password(password):
                raise forms.ValidationError("Incorrect password")
            if not user.is_active:
                raise forms.ValidationError("This user is not longer active")
        return super(LoginForm, self).clean(*args, *kwargs)

登录视图:

def login_view(request):
    form = LoginForm(request.POST or None)
    title = "Log in"
    if form.is_valid():
        username = form.cleaned_data['username']
        password = form.cleaned_data['password']
        user = authenticate(username=username, password=password)
        login(request, user)
        return redirect('../../index/')

    return render(request, 'user/loginRegister.html', {'form': form, 'title': title})

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

默认身份验证后端只会登录is_activeTrue的用户。

默认情况下,is_active=True表示用户可以登录。这并不意味着他们当前已登录。

相关问题