Как решить проблему с Аутентификацией в django?

Я написал кастомную форму для Входа в аккаунт:

forms.py
class UsersLoginForm(forms.Form):
    username = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput)

    def __init__(self, *args, **kwargs):
        super(UsersLoginForm, self).__init__(*args, **kwargs)
        self.fields['username'].widget.attrs.update({
            'class': 'form-control form_log-in form_username',
            "name": "username"})
        self.fields['password'].widget.attrs.update({
            'class': 'form-control form_log-in form_password',
            "name": "password"})

    def clean(self, *args, **keyargs):
        username = self.cleaned_data.get("username")
        password = self.cleaned_data.get("password")

        if username and password:
            user = authenticate(username=username, password=password)
            if not user:
                raise forms.ValidationError("This user does not exists")
            if not user.check_password(password):
                raise forms.ValidationError("Incorrect Password")
            if not user.is_active:
                raise forms.ValidationError("User is no longer active")

        return super(UsersLoginForm, self).clean(*args, **keyargs)

Но при попытке входа, каждый раз is_valid выдает False, проверял с разными аккаунтами, с точно правильными данными
Views.py

def login_view(request):
    form = UsersLoginForm(request.POST or None)
    print(form.is_valid())
    print(form.errors)
    if form.is_valid():
        username = form.cleaned_data.get("username")
        password = form.cleaned_data.get("password")
        user = authenticate(username=username, password=password)
        login(request, user)
        return redirect("/",{'user':user})
    return render(request, "users/log_in.html", {
        "form": form,
        "title": "Login",
    })

Что мне делать? Буду рад любой помощи_)
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Вам нужно прочитать документацию и обратить внимание на то, что вопросами аутентификации должен заниматься бэкенд аутентификации, а не форма или представление.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы