5

मुझे एक समस्या है जहां मैं सफलतापूर्वक उपयोगकर्ताओं को पंजीकृत कर रहा हूं - हालांकि, मैं चाहता हूं कि उपयोगकर्ता पंजीकरण पर लॉग इन हों। यहां वह कोड है जो मेरे पंजीकरण दृश्य का प्रतिनिधित्व करता है। कोई विचार नहीं है कि उपयोगकर्ता ऑटो-लॉग इन क्यों नहीं है?Django स्वचालित लॉगिन (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

आह! मैं यह समझ गया। यदि किसी को भी यह समस्या है, तो 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

वर्ग आधारित विचारों यहाँ कोड है कि मेरे लिए काम किया (django 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' होना चाहिए 'UserCreateForm' मुझे लगता है। – blissini

+0

धन्यवाद @blissini ने इसे – colins44

+0

बदल दिया क्योंकि मुझे इसके लिए एक समाधान की आवश्यकता है, क्योंकि @Patrick इस धागे में टिप्पणी में बताता है: http://stackoverflow.com/questions/3222549/how-to-automatically-login-a-user बाद में पंजीकरण-इन-डीजेंगो, किसी भी कारण से कुछ संशोधित होने पर 'प्रमाणीकरण (उपयोगकर्ता नाम = form.cleaned_data ['उपयोगकर्ता नाम'], पासवर्ड = form.cleaned_data ['password1']) के साथ प्रमाणित करना बेहतर है। सत्यापन के दौरान। – blissini

संबंधित मुद्दे