Задать вопрос
0ralo
@0ralo
Python backend developer

Почему не совпадают пароли?

Всем привет!
Сейчас учу джангу и появилась странная проблема. При попытке войти в аккаунт или зарегистрироваться - не выходит

При регистрации ошибка - password_mismatch Внимание! даже если пароли не вводились, а вставлялись CTRL + V

При авторизации в существующий аккаунт ошибка - invalid_logininactive

Файлики:
views.py
from django.contrib.auth import login
from django.http import HttpResponse
from django.shortcuts import render
from django.contrib.auth.forms import AuthenticationForm, UserCreationForm


def user_login(request):
	if request.method == "POST":
		form = AuthenticationForm()
		if form.is_valid():
			usr = form.get_user()
			login(request, usr)
			return HttpResponse("<h1>good</h1>")
		else:
			return HttpResponse(form.error_messages)
	else:
		form = AuthenticationForm()
		return render(request, "UserAuth/login.html", {"form": form})


def user_register(request):
	if request.method == "POST":
		form = UserCreationForm()
		if form.is_valid():
			usr = form.save()
			login(request, usr)
			return HttpResponse("<h1>good</h1>")
		else:
			return HttpResponse(form.error_messages)

	else:
		form = UserCreationForm()
		return render(request, "UserAuth/register.html", {"form": form})

urls.py
from django.urls import path
from .views import *

urlpatterns = [
	path("login/", user_login),
	path("register/", user_register),
]

templates/login.html
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Log in</title>
</head>
    <body>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Go</button>
    </form>
    </body>
</html>

templates/register.html
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
    <body>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Go</button>
    </form>
    </body>
</html>

Путем наисложнейшего дебага я обнаружил что is_valid() не возвращает Тру, хотя своих методов валидации я не писал
  • Вопрос задан
  • 222 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
Wispik
@Wispik
так в форму же вроде надо данные передать
form = AuthenticationForm(request.POST)
Ответ написан
Комментировать
Tonatos
@Tonatos
При инициализации формы, в них нужно передать данные из запроса таким образом:
form = AuthenticationForm(request.POST)

...

form = UserCreationForm(request.POST)


Сейчас она у вас инициализируется пустой, по-этому и валидация не срабатывает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы