Моя пользовательская форма входа в систему Django пытается создать нового пользователя, а не войти в систему - PullRequest
0 голосов
/ 09 февраля 2020

Я настроил пользовательский класс пользователя и использую все пользовательские шаблоны управления пользователями, представления, URL-адреса и т. Д. c ... Все они работают, кроме моего вида входа в систему. Я могу заставить его работать, потянув имя пользователя и пароль прямо из запроса и пропустив очистку формы. Однако это звучит как очень плохая идея.

Когда я пытаюсь использовать forms.is_valid (), функция выдает мне ошибки, указывающие на то, что она пытается создать нового пользователя, а не войти в него существующего. искал и делал проб и ошибок уже несколько часов, и я до сих пор не понимаю, почему он это делает и почему, похоже, никто не беспокоится об очистке их форм входа в систему.

Вот мой вид входа в систему:

def loginView(request):
    if not request.user.is_authenticated:
        if request.method == 'POST':
            form = forms.LoginForm(request.POST)
            authError = False
            if form.is_valid():
                username = form.cleaned_data.get('username')
                password = form.cleaned_data.get('password')
                post = CustomUser.objects.filter(username=username)
                if post:
                    username = form.cleaned_data.get('username')
                    user = authenticate(username=username, password=password)
                    login(request, user)
                    return redirect('home')
                else:
                    authError = True
            print("form failed")
            #print(form)
            #print(form.errors)
            return render(request, 'login.html', context={'form': form, 'form_errors': form.errors, "auth_error": authError})
        else:
            print("get request")
            form = forms.LoginForm()
            print(form)
            return render(request, 'login.html', context={'form': form})
    else:
        return redirect('home')

и вот моя форма:

class LoginForm(forms.ModelForm):

    class Meta:
        model = CustomUser
        fields = ['username', 'password']
        widgets = {'password': forms.PasswordInput()}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...