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

时间:2014-02-02 08:19:21

标签: python django authentication login

我正在尝试使用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)返回用户的名称),但仅限于我在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})

我尝试登录时打印ERRORprint(user)返回None

P.S。

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

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

1 个答案:

答案 0 :(得分:0)

当您使用create_user函数

  

User.objects.create_user(username ='username',password ='password')

,您之前不需要进行密码加密。

它会自动制作。