Django AuthenticationForm не работает, форма принимает данные, но ничего не происходит
По сути, я пытаюсь сделать простую систему входа в систему, используя Django AuthenticationForm и LoginView. Форма принимает ввод пользователя, и когда кнопка входа нажата, страница просто перезагружается, вместо того, чтобы бросать ошибки валидации или регистрировать пользователя и перенаправлять его. Я пытался переписать чистый метод, но результат тот же. Я не знаю, что я делаю неправильно. Любая помощь будет принята с благодарностью, заранее спасибо!
Это модель пользователя:
class StoreUser(auth_models.AbstractBaseUser, auth_models.PermissionsMixin):
email = models.EmailField(
unique=True,
)
date_joined = models.DateTimeField(
auto_now_add=True,
)
is_staff = models.BooleanField(
default=False,
)
USERNAME_FIELD = 'email'
objects = StoreUserManager()
Вот вид входа:
class UserLoginView(auth_views.LoginView):
form_class = UserLoginForm
template_name = 'store_auth/user_login.html'
success_url = reverse_lazy('homepage')
А также форма:
class UserLoginForm(auth_forms.AuthenticationForm):
email = forms.EmailField(widget=forms.EmailInput(attrs={'class': 'form-control', 'id': "email-login", 'placeholder': "Enter your email",}))
password = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'form-control', 'id':"password-login", 'labels': "Password", 'placeholder': "Enter your password", }))
И HTML:
<form method="post" action="{% url 'user login' %}">
{% csrf_token %}
<div class="form-group">
<label for="email-login">E-Mail</label>
{{ form.email }}
</div>
<div class="form-group">
<label for="password-login">Password</label>
{{ form.password }}
</div>
<a href="javascript:;">Forgotten Password?</a>
<div class="padding-top-20">
<button class="btn btn-primary" type="submit">Login</button>
</div>
Я не уверен, почему ваш метод __init__ не работает, но вы можете добавить определения виджетов в класс Meta:
class UserLoginForm(auth_forms.AuthenticationForm):
email = forms.EmailField()
password = forms.CharField()
class Meta:
# AuthenticationForm is not a ModelForm so the line below is
# invalid. Your User model will be retrieved through the
# AUTH_USER_MODEL setting
# model = StoreUser
fields = ['email', 'password']
widgets = {
'email': forms.EmailInput(attrs={'class': 'form-control', 'id': "email-login", 'placeholder': "Enter your email",}),
'password': forms.PasswordInput(attrs={'class': 'form-control', 'id':"password-login", 'labels': "Password", 'placeholder': "Enter your password", })
}
Дайте мне знать, если это работает :)