Есть ли способ передать объект формы в методе аутентификации в django

Я пытаюсь передать объект формы в метод authenticate(), но он говорит, что нет атрибутов для имени пользователя и пароля. Есть ли конкретный способ аутентификации этой формы или нет. Я уже импортировал все из forms и auth.models

MY VIEWS.PY

def user_login(request):

    if request.method == 'POST':

        login_info = LoginForm(request.POST)
        
        

        user = authenticate(username = login_info.username, 
        password=login_info.password)

        

        if user:

            login(request,user)


            return HttpResponse(reversed('index'))

        else:
           return HttpResponse("Wrong")

    else:
        login_info = LoginForm()
    
    return render(request,"login.html",{'logininfo':login_info})
MY FORMS.PY
class LoginForm(forms.Form):
    username = forms.CharField(label = 'Your username')
    password = forms.CharField(label= "Don't tell any but us",widget=forms.PasswordInput())
    
    

Есть ли другой путь

user = authenticate(username = login_info.username, password=login_info.password)

Данные в форме доступны через словарь cleaned_data.

Таким образом, ваша строка аутентификации будет выглядеть следующим образом:

user = authenticate(username=login_info.cleaned_data['username'], password=login_info.cleaned_data['password'])

Однако cleaned_data доступен только после валидации формы. Поэтому ваш код должен выглядеть следующим образом:

login_info = LoginForm(request.POST)
if login_info.is_valid():
    user = authenticate(username=login_info.cleaned_data['username'], password=login_info.cleaned_data['password'])
    # rest of the code
else:
    return HttpResponse("Wrong") # or display the same form with the errors
Вернуться на верх