Получение определенного значения атрибута из набора запросов django (аутентификация по паролю)
Я пытаюсь реализовать систему входа в систему на своей веб-странице и хочу проверить, равен ли пароль, введенный в форме, паролю пользователя в базе данных. Я могу получить пароль из базы данных через словарь, который находится в наборе запросов. Как я могу просто получить значение из этого словаря?
Я хочу, чтобы пароль_из_БД был равен "password1234"
views.py
def login(request):
if request.method == "POST":
form = LoginForm(request.POST)
if form.is_valid():
email = form.cleaned_data.get("email")
password_entered = form.cleaned_data.get("password")
find_person_by_email = Person.objects.filter(email=email)
password_from_DB = find_person_by_email.values("password")
print(password_from_DB)
if password_from_DB != password_entered :
print("INCORRECT")
else:
print("CORRECT")
context = {"title": "Login"}
return render(request, "myApp/login.html", context)
Вывод из print(password_from_DB):
<QuerySet [{'password': 'password1234'}]>
def login(request):
context = {"title": "Login"}
if request.method == "POST":
form = LoginForm(request.POST)
if form.is_valid():
email = form.cleaned_data.get("email")
password_entered = form.cleaned_data.get("password")
find_persons_by_email = Person.objects.filter(email=email)
if len(find_persons_by_email) != 0:
print("User found by email is not unique")
return render(request, "myApp/login.html", context)
find_person_by_email = find_persons_by_email.first()
password_from_DB = find_person_by_email.password
if password_from_DB != password_entered :
print("INCORRECT")
else:
print("CORRECT")
return render(request, "myApp/login.html", context)
В качестве альтернативы
find_persons_by_email = Person.objects.filter(email=email)
if len(find_persons_by_email) != 0:
print("User found by email is not unique")
return render(request, "myApp/login.html", context)
find_person_by_email = find_persons_by_email.first()
Вы можете просто написать, но это вызовет ошибку Exception
, если введенный email не является уникальным, сопоставленным с одним пользователем.
find_person_by_email = Person.objects.get(email=email)