Вход, регистрация на одной странице django (аутентификация в нескольких формах)? Я могу зарегистрироваться ... Почему в meassage при входе в систему показывается недействительный мандат
***
VEIWS.PY Это views.py Я могу войти в систему, но не могу войти, он показывает недействительные учетные данные
.
`def login_user(request): if request.method=='POST':
`
показывает недействительные учетные данные
Потому что ваш authenticate()
возвращает None
authenticate()
по умолчанию принимает имя пользователя и пароль для аутентификации, а вы предоставляете email и пароль для аутентификации. Если вы хотите аутентифицироваться по электронной почте и паролю, напишите свой собственный бэкенд аутентификации.
from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend
class CustomEmailBackend(ModelBackend):
def authenticate(self, request, email=None, password=None, **kwargs):
UserModel = get_user_model()
try:
user = UserModel.objects.get(email=email)
except UserModel.DoesNotExist:
return None
else:
if user.check_password(password):
return user
return None
После этого укажите вашу пользовательскую аутентификацию в settings.py
AUTHENTICATION_BACKENDS = ['path.to.CustomEmailBackend']
Также сделайте свой email заполненным unique=True
По умолчанию аутентификация осуществляется по полю username в модели пользователя auth, вам нужно установить поле username_field в поле email в модели пользователя auth.Ваша модель пользователя auth должна выглядеть следующим образом
class User(AbstractBaseUser,PermissionsMixin):
**fields**
USERNAME_FIELD = 'email'