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", })
       }

Дайте мне знать, если это работает :)

Вернуться на верх