Django login invalid form
Я все сделал правильно, но мой логин не работает Я поставил 2 input в форме логина, но запрос пользователя отправил мне 3 поля, 1 из которых я не поставил и я получаю эти поля номер телефона - логин-пароль - номер телефона
form*
class LoginForm(AuthenticationForm):
phone_number = forms.CharField(widget=forms.TextInput(
attrs={'class': 'form-control mb-3', 'placeholder': 'phone_number', 'id': 'login-phone_number'}))
password = forms.CharField(widget=forms.PasswordInput(
attrs={
'class': 'form-control',
'placeholder': 'Password',
'id': 'login-pwd',
}
))
view*
def account_login(request):
if request.user.is_authenticated:
return redirect('/')
if request.method == 'POST':
form = LoginForm(request.POST)
print(form)
print(form.is_valid()) => #false
if form.is_valid():
phone_number = form.cleaned_data.get('phone_number')
password = form.cleaned_data.get('password')
user = authenticate(phone_number=phone_number, password=password)
print(user)
if user is not None:
login(request, user)
return redirect('/')
else:
messages.error(request, "Invalid username or password.")
else:
messages.error(request, "Invalid username or password.")
form = LoginForm(request.POST)
return render(request, "account/login.html", {"form": form})
login.html*
{% extends "./sub_base.html" %}
{% block title %}Log-in{% endblock %}
{% block sub_content %}
<form class="account-form" action="{% url 'account:login' %}" method="post">
{% csrf_token %}
<h3 class="mb-4">Sign In</h3>
{% if form.errors %}
<div class="alert alert-primary" role="alert">
Error: Username or Password not correct!
</div>
{% endif %}
<label class="form-label">{{ form.username.label}}</label>
{{ form.username}}
<label class="form-label">{{ form.password.label}}</label>
{{ form.password}}
<div class="d-grid gap-2">
<input type="hidden" name="next" value="{{ next }}">
<button class="btn btn-primary py-2 mb-4 mt-5 fw-bold" type="submit" value="Log-in">Sign in
</button>
</form>
{% endblock %}
вы не сделали имя пользователя!?
widget=forms.TextInput(
attrs={'placeholder': 'username', 'class': 'input100'}),
вы назвали form.username
в вашем шаблоне, но в форме нет ввода имени пользователя?!
возможно, вам следует изменить username
в login.html
на phone_number
, потому что нет имени пользователя в представлении и форме
Я предлагаю поставить request
в authenticate следующим образом:
user = authenticate(request,phone_number=phone_number, password=password)
замените все телефонные номера на имя_пользователя или сделайте для него ввод Надеюсь, это сработает