5

Kullanıcıları başarıyla kaydettirdiğim bir sorununuz var - ancak, kullanıcıların kayıt olmalarını istiyorum. Kayıt görünümümü temsil eden kod İşte. Kullanıcının neden otomatik giriş yapmadığına dair herhangi bir düşünce var mı?Django kullanıcı girişi sonrası otomatik giriş (1.4)

Notlar:

kullanıcının doğru kayıtlı ediliyor
  • , bu
  • authenticate sonra giriş yapabilirsiniz (** kwargs) settings.py olarak doğru kullanıcıyı
  • dönüyor ben:

    AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',) 
    

teşekkürler!

def register(request): 
    user_creation_form = UserCreationForm(request.POST or None) 
    if request.method == 'POST' and user_creation_form.is_valid(): 
     u_name = user_creation_form.cleaned_data.get('username') 
     u_pass = user_creation_form.cleaned_data.get('password2') 
     user_creation_form.save() 
     print u_name # Prints correct username 
     print u_pass # Prints correct password 
     user = authenticate(username=u_name, 
          password=u_pass) 
     print 'User: ', user # Prints correct user 
     login(request, user) # Seems to do nothing 
     return HttpResponseRedirect('/book/') # User is not logged in on this page 
    c = RequestContext(request, {'form': user_creation_form}) 
    return render_to_response('register.html', c) 

cevap

3

Ah! Bunu anladım. Herhangi birinin bu sorunu varsa, manuel olarak çağırıyorsanız django.contrib.auth adresinden içe aktarma girişini içe aktarıyorum - Görünümü içe aktarıyordum. Yorumlanan kod, durumum için kötü ithalatı temsil ediyor.

# from django.contrib.auth.views import login 
from django.contrib.auth import authenticate, logout, login 
3

ben bu şekilde yapın: Burada sınıf temelli görünümler için

u.backend = "django.contrib.auth.backends.ModelBackend" 
login(request, u) 
+0

teşekkürler oldu! Bunu bilmek de güzel. – zallarak

+0

Bunu da kullanıyorum – nemesisdesign

1

benim için çalıştı kodu (1.7 django)

from django.contrib.auth import authenticate, login 
from django.contrib.auth.forms import UserCreationForm 
from django.views.generic import FormView 

class SignUp(FormView): 
    template_name = 'signup.html' 
    form_class = UserCreationForm 
    success_url='/account' 

    def form_valid(self, form): 
     #save the new user first 
     form.save() 
     #get the username and password 
     username = self.request.POST['username'] 
     password = self.request.POST['password1'] 
     #authenticate user then login 
     user = authenticate(username=username, password=password) 
     login(self.request, user) 
     return super(SignUp, self).form_valid(form) 
+0

'' form_class' '' UserCreationForm' 'UserCreateForm' olmalıdır. – blissini

+0

thanks @blissini değişti – colins44

+0

Bunun için bir çözüme ihtiyaç duyduğum gibi, @Patrick bu konudaki yoruma işaret ediyor: http://stackoverflow.com/questions/3222549/how-to-automatically-login-a-user -farklı kayıt-in-django, bir şey bir şey için değiştirilir durumunda 'kimlik doğrulaması (username = form.cleaned_data [' kullanıcı adı '], şifre = form.cleaned_data [' password1 ']) 'ile kimlik doğrulaması bile daha iyidir doğrulama sırasında. – blissini

İlgili konular