Пользователь всегда отсутствует, не позволяет пользователю войти - PullRequest
0 голосов
/ 13 апреля 2019

При создании формы входа в систему и регистрации у меня были проблемы с формой регистрации, проблема в том, что всякий раз, когда я создаю пользователя через регистрацию и пытаюсь войти в систему с тестовым пользователем, он не регистрируется, всегда указываетHttpresponse я настроил.После проверки админ-панели создается пользователь, теперь я не знаю, куда идти, я думаю, что не получает нужные данные или не получает их


## Register
def register(request):
    if request.method == 'GET':
        return render(request, 'auth/register.html', { })
    if request.method == 'POST':
        form = RegistrationForm(request.POST)

        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            passwordConf = form.cleaned_data['passwordConf']
            email = form.cleaned_data['email']
            first_name = form.cleaned_data['first_name']
            last_name = form.cleaned_data['last_name']

            user = User.objects.create_user(username, password, email)

            if password == passwordConf:
                return HttpResponseRedirect("/auth/signin")
            else:
                return HttpResponse("Passwords do not match", status=400)   
        else:
            return HttpResponse("Invalid registration request.(Bad Request)", status=400)

    else:
        form = RegistrationForm      
        return HttpResponse("Method not allowed on /auth/register.(Method Not Allowed)", status=405)


## Signin
def signin(request):
    if request.method == 'GET':
        return render(request, 'auth/signin.html', { })

    if request.method == 'POST':
        form = SigninForm(request.POST)

        if form.is_valid():
            username = request.POST["username"]
            password = request.POST["password"]
            user = authenticate(request, username=username, password=password)
            if user is not None:
                login(request, user)
                return HttpResponseRedirect('/')
            else:
                return HttpResponse('Invalid Credientials', status=401 )
        else:
            return HttpResponse("Form is not valid", status=401)

Ответы [ 2 ]

1 голос
/ 13 апреля 2019

Ваш create_user отправляет порядок аргументов, отличный от ожидаемого. Согласно документам он имеет подпись create_user(username, email=None, password=None, **extra_fields).

В настоящее время, используя user = User.objects.create_user(username, password, email), вы устанавливаете user.email=password и user.password=email.

Вам необходимо использовать:

user = User.objects.create_user(username, email, password)

0 голосов
/ 13 апреля 2019

может быть ваш пользователь неактивен, то есть is_active - это False. Вам либо нужно

AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.AllowAllUsersModelBackend']

в настройках или установите is_active на True.

Документы : Бэкэнд по умолчанию сначала проверяет is_active, в этом причина.

...