繁体   English   中英

Django的。 身份验证(用户返回无)

[英]Django. Authentication (user returns None)

我正在尝试使用Django创建登录表单。 所以我在视图中创建了一个函数,它看起来像这样:

def signin(request):
    if request.method == 'POST':
        form = SigninForm(request.POST)
        if form.is_valid():
            login = request.POST.get('login', '')
            password = request.POST.get('password', '')
            user = auth.authenticate(username=login, password=password)
            print(user)
            if user is not None and user.is_active:
                auth.login(request, user)
                return HttpResponse("OK")
            else:
                return HttpResponse("ERROR")
    else:
        form = SigninForm()     
    return render(request, 'signin.html', {'form': form})

并且可以正常工作(打印OKprint(user)返回print(user)名),但仅适用于在执行syncdb (超级用户)时创建的用户。

但是,当我尝试创建这样的用户时:

def signup(request):
    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/')
    else:
        form = SignupForm()
    return render(request, 'signup.html', {'form': form})

当我尝试登录时它会打印ERROR ,并且print(user)返回None

聚苯乙烯

  • 我在我的settings.py添加了: AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', )
  • 我可以在管理页面中看到通过注册功能创建的用户(看起来就像超级用户一样)

我不知道我在做什么错。 你能帮我吗?

当您使用create_user函数作为

User.objects.create_user(用户名='用户名',密码='密码')

,您无需先进行密码加密。

它将被设为自动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM