用户始终为无,不允许用户登录

时间:2019-04-13 05:36:06

标签: django django-authentication

在创建登录和注册表单时,注册表单一直存在问题,问题在于,每当我通过注册创建用户并尝试以测试用户身份登录时,它都不会登录,始终指向我已经设置了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 个答案:

答案 0 :(得分:1)

您的create_user发送的参数顺序与预期的顺序不同。根据{{​​3}},它的签名为create_user(username, email=None, password=None, **extra_fields)

当前,通过使用user = User.objects.create_user(username, password, email),您正在设置user.email=passworduser.password=email

您需要使用:

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

答案 1 :(得分:0)

可能是您的用户处于非活动状态,即is_activeFalse。您要么需要

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

在您的设置中,或将is_active设置为True

文档Default backend首先检查is_active,这就是原因。

相关问题