Создание учетной записи и аутентификация с помощью Django
Я натыкаюсь на стену с этим кодом. Я могу создать пользователя и сохранить данные. Я могу видеть пользователя в панели администратора django. Когда я пытаюсь войти в систему под этим пользователем, я получаю сообщение об ошибке. Я пробовал сменить пароль в панели администратора django. Это тоже не сработало. Вот мой код. login.html
forms.py
models.py
views.py
class CustomLoginView(LoginView):
form_class = LoginForm
template_name = 'users/login.html'
def form_valid(self, form):
remember_me = form.cleaned_data.get('remember_me')
if not remember_me:
self.request.session.set_expiry(0)
self.request.session.modified = True
return super(CustomLoginView, self).form_valid(form)
def login_view(request):
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return redirect('home')
else:
form.add_error(None, "This account is inactive.")
else:
if not get_user_model().objects.filter(username=username).exists():
form.add_error(None, "Invalid username or password")
else:
user_obj = get_user_model().objects.get(username=username)
if check_password(password, user_obj.password):
form.add_error(None, "This account is inactive.")
else:
form.add_error(None, "Invalid username or password")
else:
form.add_error(None, "Form validation failed.")
else:
form = LoginForm()
return render(request, 'users/login.html', {'form': form})
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'users.apps.UsersConfig',
'social_django',
'django.contrib.postgres',
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
Если бы кто-нибудь мог помочь найти то, чего мне не хватает, я был бы очень признателен Я использую Postgresql, если это имеет значение.
Это журнал ошибок, который я пытался реализовать, чтобы найти свою проблему, но он мне ничего не говорит
(0.002) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."expire_date" > '2025-03-07T01:50:50.049020+00:00'::timestamptz AND "django_session"."session_key" = 'kbfks1dttfovy17uf8q850as10stpzxq') LIMIT 21; args=(datetime.datetime(2025, 3, 7, 1, 50, 50, 49020, tzinfo=datetime.timezone.utc), 'kbfks1dttfovy17uf8q850as10stpzxq'); alias=default (0.002) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."expire_date" > '2025-03-07T01:50:50.049020+00:00'::timestamptz AND "django_session"."session_key" = 'kbfks1dttfovy17uf8q850as10stpzxq') LIMIT 21; args=(datetime.datetime(2025, 3, 7, 1, 50, 50, 49020, tzinfo=datetime.timezone.utc), 'kbfks1dttfovy17uf8q850as10stpzxq'); alias=default (0.000) SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 6 LIMIT 21; args=(6,); alias=default (0.000) SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 6 LIMIT 21; args=(6,); alias=default "POST /login/ HTTP/1.1" 200 6474 "POST /login/ HTTP/1.1" 200 6474
Значение AUTH_USER_MODEL было закомментировано в settings.py