2011-06-03 12 views
6

मेरे पास एक django-पंजीकरण है और काम कर रहा है। मैं इसमें दो अतिरिक्त विशेषताओं को जोड़ना चाहता हूं और लॉग-इन प्रक्रिया के आंतरिक-कार्य को समझने में कठिनाई हो रही है।ऑटो लॉग-इन और ईमेल फिर से भेजें

1) जब कोई उपयोगकर्ता सक्रियण ईमेल पर क्लिक करता है, तो यह खाता सक्रिय करता है लेकिन उपयोगकर्ता को लॉग इन नहीं करता है, मैं इसे सक्रियण लिंक पर क्लिक करके कैसे सक्रिय कर सकता हूं और खाता स्वचालित रूप से उपयोगकर्ता में लॉग इन करता है? यह वर्तमान में मेरे activate समारोह कैसा दिखता है -

def activate(self, request, activation_key): 
    activated = RegistrationProfile.objects.activate_user(activation_key) 
    if activated: 
     signals.user_activated.send(sender=self.__class__, 
            user=activated, 
            request=request) 
     login (request, activated) ### if I try this line, it throws an error 'User'   
            ### object has no attribute 'backend 
    return activated 

अद्यतन: मैं एक हैक जोड़ने के लिए इस काम के प्राप्त करने के लिए, सत्र का उपयोग कर पा रहा था। निश्चित रूप से यह आदर्श समाधान नहीं है, लेकिन यहाँ मैं क्या है -

def register(self, request, **kwargs): 
    ...   
    new_user.save() 
    request.session['username'] = username 
    request.session['password'] = password 
    return new_user 

def activate(self, request, activation_key): 
    username = request.session['username'] 
    password = request.session['password'] 
    activated = RegistrationProfile.objects.activate_user(activation_key) 
    if activated: 
     signals.user_activated.send(sender=self.__class__, 
            user=activated, 
            request=request) 
     user = authenticate(username=username, password=password) 
     login(request, user) 
    return activated 

2) मैं एक उपयोगकर्ता के लिए एक विकल्प जोड़ने के लिए एक और सक्रियण ईमेल प्राप्त करने के लिए एक बटन क्लिक करने के लिए सक्षम होने के लिए चाहते हैं (वह विफल पहले प्राप्त करने के लिए)। ऐसा लगता है निम्न जहां सक्रियण ईमेल पंजीकरण कराने पर भेज दिया जाता है है -

signals.user_registered.send(sender=self.__class__, 
           user=new_user, 
           request=request) 

मैं उपयोगकर्ता खाते को देखते हुए एक और सक्रियण ईमेल कैसे भेजना होगा पहले से ही बनाया गया है?

उत्तर

14

1)।

from django.contrib.auth import login 
from registration import signals 

def login_on_activation(user, request, **kwargs): 
    user.backend='django.contrib.auth.backends.ModelBackend' 
    login(request, user) 

signals.user_activated.connect(login_on_activation) 

2)। registration.models.RegistrationProfile.send_activation_email विधि।

+1

सक्रियण लिंक प्रक्रिया को पुनः भेजने के लिए send_activation_email काम भेजेगा? – Ashiya

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