2009-12-15 17 views
7

मेरे ऐप में मेरे पास AUTH_PROFILE_MODULEusers.UserProfile पर सेट है। इस UserProfile में एक फ़ंक्शन create है जिसे कॉल किया जाना चाहिए, जब कोई नया उपयोगकर्ता पंजीकृत होता है, और उसके बाद UserProfile प्रविष्टि बनाते हैं।django-पंजीकरण और उपयोगकर्ता प्रोफ़ाइल निर्माण

डीजेंगो-पंजीकरण दस्तावेज के अनुसार सभी को करने की आवश्यकता है, मेरे urls.py में profile_callback प्रविष्टि सेट करना है। मेरा इस तरह दिखता है:

url(r'^register/$', register, {'form_class': RecaptchaRegistrationForm, 
'profile_callback': UserProfile.objects.create, 
'backend': 'registration.backends.default.DefaultBackend',}, 
name='registration_register') 

लेकिन मैं इस त्रुटि मिलती है:

Exception Value: register() got an unexpected keyword argument 'profile_callback'

तो जहां मैं इस डाल करने के लिए है, यह काम करने के लिए?

उत्तर

11

डीजेंगो-पंजीकरण का कौन सा संस्करण आप उपयोग कर रहे हैं? और आप django- पंजीकरण का कौन सा संस्करण का जिक्र कर रहे हैं? मुझे इस प्रोफाइल_callback के बारे में पता नहीं था।

जो आप खोज रहे हैं उसे प्राप्त करने का एक और तरीका है Django सिग्नल (http://docs.djangoproject.com/en/dev/topics/signals/) का उपयोग करना। Django- पंजीकरण आवेदन कुछ प्रदान करता है।

इसे प्राप्त करने का एक तरीका है अपने प्रोजेक्ट (या एप्लिकेशन) में एक सिग्नल.py बनाना और दस्तावेज जैसे संकेतों से जुड़ा हुआ है। फिर अपने init में सिग्नल मॉड्यूल आयात करें .py या urls.py फ़ाइल यह सुनिश्चित करने के लिए कि आपकी प्रोजेक्ट चलने पर यह पढ़ा जाएगा।

निम्नलिखित उदाहरण post_save सिग्नल का उपयोग करके किया जाता है लेकिन आप django- पंजीकरण प्रदान किए गए लोगों का उपयोग करना चाह सकते हैं।

from django.db.models.signals import post_save 
from userprofile.models import UserProfile 
from django.contrib.auth.models import User 

def createUserProfile(sender, instance, **kwargs): 
    """Create a UserProfile object each time a User is created ; and link it. 
    """ 
    UserProfile.objects.get_or_create(user=instance) 

post_save.connect(createUserProfile, sender=User) 
+2

ऐसा लगता है कि मैंने एक नया django-पंजीकरण संस्करण का उपयोग किया और पुराने दस्तावेज़ों को पढ़ा। मैंने इसे प्रतिबद्ध संदेशों में पाया: "कस्टम सिग्नल अब उपयोगकर्ता पंजीकरण और उपयोगकर्ता सक्रियण पर भेजे जाते हैं। प्रोफ़ाइल_callback तंत्र जो पहले एक समान उद्देश्य परोसता था, हटा दिया गया है, इसलिए यह पीछे की तरफ असंगत है।" तो आपका समाधान जाने का रास्ता है। – Kai

0

Django पंजीयन दो संकेतों, जो कर रहे हैं प्रदान करता है:

  • user_registered: भेजा गया पंजीकरण पूरा हो गया है जब
  • user_activated: भेजा गया उपयोगकर्ता सक्रियण लिंक
का उपयोग कर अपने खाते सक्रिय कर देगा तो

आपके मामले के लिए, आपको user_registered

की आवश्यकता है 210

आपको कोई अलग सिग्नल.py फ़ाइल बनाने की आवश्यकता नहीं है। आप इस कोड को अपने किसी ऐप के models.py में रख सकते हैं। हालांकि, इसके प्रोफाइल निर्माण कोड के बाद, आपको इसे प्रोफाइल/मॉडलों में रखना चाहिए/models.py

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