首页 > 解决方案 > 用户始终为无,不允许用户登录

问题描述

在创建登录和注册表单时,我一直在注册表单上遇到问题,问题是每当我通过注册创建用户并尝试使用测试用户登录时它不会登录,总是指向我拥有的 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)

标签: djangodjango-authentication

解决方案


create_user发送的参数顺序与预期不同。根据文档,它有签名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)


推荐阅读