У меня есть представление на основе классов, что подклассы LoginView
.
from django.contrib.auth.views import LoginView
class CustomLoginView(LoginView):
def get_success_url(self):
url = self.get_redirect_url()
return url or reverse_lazy('knowledgebase:user_home', kwargs={
'username':self.request.user.username,
})
Я хочу переопределить сообщение об ошибке, если электронная почта пользователя еще не активна, потому что он должен щелкнуть ссылку, отправленную на его адрес. Адрес электронной почты. Текущее сообщение по умолчанию выглядит следующим образом:
Вместо слов:
Пожалуйста, введите правильный адрес электронной почты и пароль , Обратите внимание, что оба поля могут быть регистрозависимыми.
Я хочу сказать что-то о следующем:
Пожалуйста, подтвердите свой адрес электронной почты, чтобы вы могли войти.
Я пробовал:
accounts / forms.py
from django.contrib.auth.forms import AuthenticationForm
from django.utils.translation import gettext as _
class PickyAuthenticationForm(AuthenticationForm):
def confirm_login_allowed(self, user):
if not user.is_active:
raise forms.ValidationError(
_("Please confirm your email so you can log in."),
code='inactive',
)
accounts / views.py
class CustomLoginView(LoginView): # 1. <--- note: this is a class-based view
form_class = PickyAuthenticationForm # 2. <--- note: define form here?
def get_success_url(self):
url = self.get_redirect_url()
return url or reverse_lazy('knowledgebase:user_home', kwargs={
'username':self.request.user.username,
})
Результат абсолютно не влияет когда я пытаюсь войти в систему с пользователем, который действительно существует, но еще не подтвердил его адрес электронной почты.
AuthenticationForm docs .