5

성공적으로 사용자를 등록하는 데 문제가 있습니다. 그러나 사용자가 등록시에 로그인해야합니다. 내 등록보기를 나타내는 코드는 다음과 같습니다. 사용자가 자동 ​​로그인하지 않은 이유에 대한 의견이 있으십니까?사용자 등록 후 장고 자동 로그인 (1.4)

주 :

는 사용자가 제대로 등록되고
  • , 그들은이
  • 인증하고 이후에 로그인 할 수 있습니다 (** kwargs로는) settings.py에서 올바른 사용자
  • 를 반환 내가 가진 :

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

감사합니다!

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) 

답변

3

Ah! 나는 그것을 알아. 누구나이 문제가있는 경우 수동으로 호출하는 경우 django.contrib.auth에서 로그인을 가져옵니다. 뷰를 가져 오려고했습니다. 주석 처리 된 코드는 내 상황에 대한 잘못된 가져 오기를 나타냅니다.

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

나는 이런 식으로 할 : 여기에 클래스 기반의 뷰

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

감사했다! 잘 알고있는 것도 좋습니다. – zallarak

+0

나는 또한 이것을 사용한다. – nemesisdesign

1

이 나를 위해 일한 코드 (1.7 장고)

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'이 아니어야한다고 생각합니다. – blissini

+0

덕분에 @blissini가 변경되었습니다 – colins44

+0

@Patrick이이 스레드의 주석에서 지적한대로 해결책이 필요했습니다. http://stackoverflow.com/questions/3222549/how-to-automatically-login-a-user -after-registration-in-django에서 어떤 이유로 든 무언가가 변경되면'authenticate (username = form.cleaned_data [ 'username'], password = form.cleaned_data [ 'password1']) 유효성 검사 중. – blissini