2016-03-29 25 views
0

新しいユーザーを作成するためのカスタムページを作成しました。ユーザーは正常に作成されますが、正しい資格情報でログインしようとすると、認証はNoneを返します。Djangoユーザー作成は成功しましたが、authenticate()は返されません。

私がDjango管理者に入ると、作成したばかりのユーザーの新しいパスワードを作成してログインできます。何か案は?

ユーザー関数を作成します。

def create_account(request): 
if request.method == "POST": 
    # Default User Fields 
    username = request.POST['username'] 
    password = request.POST['password'] 
    email = request.POST['email'] 
    first_name = request.POST['first_name'] 
    last_name = request.POST['last_name'] 


    try: 
     user = User.objects.create_user(username,email,password,first_name=first_name, last_name=last_name) 
     user.save() 
     user_profile = models.User_Profile.objects.create_user_profile(user) 
     user_profile.save() 
     response = {'success': True} 
     return HttpResponse(json.dumps(response)) 
    except Exception, e: 
     response = {'success': False} 
     return HttpResponse(json.dumps(response)) 

ログイン機能:

def site_login(request): 
#TODO: GET THIS WORKING 
if request.method == "POST": 
    user = authenticate(username=request.POST['username'], password=request.POST['password']) 
    if user is not None: 
     if user.is_active: 
      login(request, user) 
      response = {'success':True} 
      return HttpResponse(json.dumps(response)) 
     else: 
      response = {'success':False,'message':'Account has been disabled.'} 
      return HttpResponse(json.dumps(response)) 
    else: 
     response = {'success':False,'message':'Invalid username or password.'} 
     return HttpResponse(json.dumps(response)) 
+0

http://stackoverflow.com/a/23482284/4143613 – erajuan

+0

ない重複の可能性の重複。私は例外を取得していません。 –

答えて

0

をあなたはユーザー(https://docs.djangoproject.com/en/1.9/ref/contrib/auth/#django.contrib.auth.models.User.set_password)を作成するときにset_passwordを使用する必要があります。やってみてください。

def create_account(request): 
    if request.method == "POST": 
     # Default User Fields 
     username = request.POST.get('username') 
     password = request.POST.get('password') 
     email = request.POST.get('email') 
     first_name = request.POST.get('first_name') 
     last_name = request.POST.get('last_name') 

     try: 
      # illustrating it out for you 
      user = User() 
      user.username = username 
      user.email = email 
      user.set_password(password) 
      user.first_name = first_name 
      user.last_name = last_name 
      user.save() 
      user_profile = models.User_Profile.objects.create_user_profile(user) 
      user_profile.save() 
      response = {'success': True} 
      return HttpResponse(json.dumps(response)) 
     except Exception, e: 
      response = {'success': False} 
      return HttpResponse(json.dumps(response)) 
+0

set_passwordを追加した後も、私はまだ "None"が返されているのを見ています –

関連する問題