2011-10-25 2 views

答えて

27

「プログラムによって」以外の方法はありません。もちろん、これはdocumentedです。プログラム的にユーザーをログイン時に

from django.contrib.auth import authenticate, login 
user = authenticate(username = username, password = password) 
if user is not None: 
    login(request, user) 
+6

:[PEP 8](http://www.python.org/dev/peps/pep-0008/#other-recommendations)は '周りのスペースを省略することをお勧めします= 'キーワード引数では、もちろんあなたは自由に何でもできます。 – icktoofay

+1

@icktoofay私はPEP 8が推奨することをよく承知しています。 (それは良い推薦ではありません) –

+2

@CatPlusPlusあなたは本当に悪い推薦と思いますか?あなたのことを奇妙に思っています。 – jdg

5

Alswaysは、あなたがエラー 'user has no attribute "backend"を取得する可能性があります、注意してください。以前に何も起こっていなければ、バックエンドを設定する必要があります。 Project that uses thisといくつかのサンプルコード:あなたのリビジョンコメント再

def splash_register(request): 
    if request.session.get('beta'): 

    if request.method=='POST': 
     userform=MyUserCreationForm(request.POST) 
     if userform.is_valid(): 
      #username of <30 char is required by Django User model. I'm storing username as a hash of user email 

      user=userform.save(commit=False) 
      user.username=hash(user.email) 
      user.backend='django.contrib.auth.backends.ModelBackend' 
      user.save() 


      username=user.username 
      password=str(userform.cleaned_data['password']) 
      auth.login(request, user) 
      request.session['first_visit']=True 
      return HttpResponseRedirect("/") 
     else: 
      userform=MyUserCreationForm(request.POST) 
      return render_to_response("website/splash_register.html", {'userform':userform}, context_instance=RequestContext(request)) 
    return render_to_response("website/splash_register.html", context_instance=RequestContext(request))  
else: 
    return HttpResponseRedirect('/splash/') 
関連する問題