2011-10-25 20 views

cevap

27

"Program aracılığıyla" başka bir yol yoktur. Tabii ki, bu documented. programlı kullanıcıları giriş yaparken

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) 'çevresinde boşluk atlama tavsiye = 'anahtar kelime argümanlarında, ama elbette istediğini yapmakta özgürsün. – icktoofay

+1

@icktoofay PEP 8'in önerdiği şeylerin farkındayım. (Bu iyi bir öneri değil) –

+2

@CatPlusPlus Gerçekten onun kötü bir öneri olduğunu mu düşünüyorsun? Bu senin garipti. – jdg

5

alsways hatayı 'user has no attribute "backend" alabilirsiniz, dikkatli olun. Daha önce gerçekleşmemişse arka ucunu da ayarlamanız gerekir. Project that uses this ve bir örnek kod: revizyon açıklama Yeniden

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/') 
İlgili konular