Новый пользователь может войти в систему после регистрации, пока я не вручную изменю пароль в консоли администратора - PullRequest
1 голос
/ 12 февраля 2020

Я не знаю, что происходит с логином пользователя, когда пользователь регистрируется, все сохраняется в базе данных, когда я проверяю консоль администратора, но когда пользователь хочет войти в систему, он не аутентифицирует пароль. Но если я go выхожу на консоль администратора и вручную изменяю пароль пользователя даже на тот же пароль, который был зарегистрирован пользователем, то пользователь успешно войдет в систему. Я пробовал это как 10 раз, это не будет аутентифицировать пользователя, пока я не вручную изменю пароль. Я надеюсь получить ответ в ближайшее время, потому что я просмотрел свои коды несколько раз. `Ниже мой views.py. Спасибо.

from django.contrib.auth.models import User
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from newapp import forms
from django.contrib.auth import authenticate, login, logout
from django.urls import reverse
from django.contrib.auth.decorators import login_required


def userreg(request):
    form = forms.UserInfoForm()
    otherform = forms.UserProfileInfoForm()
    registered = False
    newname = False

    if request.method == "POST":
        form = forms.UserInfoForm(data=request.POST)
        otherform = forms.UserProfileInfoForm(data=request.POST)

        if form.is_valid() and otherform.is_valid():
            newname = form.cleaned_data.get('first_name')

            user = form.save()

            user.set_password(user.password)

            user.save()

            profile_form = otherform.save(commit=False)

            profile_form.user = user

            if 'profile_pic' in request.FILES:
                profile_form.profile_pic = request.FILES['profile_pic']

            profile_form.save()

            registered = True



    return render(request, 'newapp/register.html', context={'form': form, 'otherform':otherform, 'newname':newname, 'registered':registered})





def userlogin(request):

    invalidlogin = False

    if request.method == "POST":
        username = request.POST['username']
        password = request.POST['password']

        user = authenticate(request, username=username, password=password)
        print(user)

        if user is not None:
            if user.is_active:
                login(request,user)
                return HttpResponseRedirect(reverse('index'))
            else:
                return HttpResponse("Sorry Your Account is not active")
        else:
            invalidlogin = 'OOPS! Your Username or Password is incorrect'
            print(f"{username} tried to login with {password}")
            return render(request, 'newapp/login.html', context={'invalidlogin': invalidlogin})

    else:
        return render(request, 'naijadict/login.html')
    return render(request, 'newapp/login.html')


@login_required
def userlogout(request):
    logout(request)
    return HttpResponseRedirect(reverse('index'))


1 Ответ

1 голос
/ 12 февраля 2020

Я надеюсь, у вас есть поле пароля в вашей форме. Чтобы установить введенный пароль, выполните следующие изменения:

password = form.cleaned_data.get('password')

user.set_password(password)

Надеюсь, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...