Я настроил пользовательский класс пользователя и использую все пользовательские шаблоны управления пользователями, представления, 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()}