मैं django-पंजीकरण का उपयोग कर रहा हूं और मैं स्वचालित रूप से उपयोगकर्ता प्रोफाइल बनाने के लिए अपने संकेतों से कनेक्ट करने का प्रयास कर रहा हूं।django-पंजीकरण ऑटो उपयोगकर्ता उपयोगकर्ता प्रोफाइल
सिग्नल परिभाषा:
from django.dispatch import Signal
# A new user has registered.
user_registered = Signal(providing_args=["user", "request"])
सिग्नल Django पंजीकरण द्वारा भेजें:
def register(self, request, **kwargs):
"""
Create and immediately log in a new user.
"""
username, email, password = kwargs['username'], kwargs['email'], kwargs['password1']
User.objects.create_user(username, email, password)
# authenticate() always has to be called before login(), and
# will return the user we just created.
new_user = authenticate(username=username, password=password)
login(request, new_user)
signals.user_registered.send(sender=self.__class__,
user=new_user,
request=request)
return new_user
मेरे संकेत कनेक्ट:
from registration.signals import *
from core.models import UserProfile
from django.contrib.auth.models import User
def createUserProfile(sender, instance, **kwargs):
UserProfile.objects.get_or_create(user=instance)
user_registered.connect(createUserProfile, sender=User)
कोई UserProfile कहने की जरूरत नहीं बनाया जा रहा है। मुझे यहां क्या समझ नहीं आ रहा है?
बहुत बहुत धन्यवाद!
संपादित करें: मैंने अपना कनेक्ट() और इसकी इसी विधि को model.py पर ले जाया और अभी भी कोई भाग्य नहीं है।
नए कोड:
from django.db import models
from django.contrib import auth
from django.contrib.auth import login
from core.forms import AuthForm
from registration.signals import *
from django.contrib.auth.models import User
# Create your models here.
class UserProfile(models.Model) :
user = models.ForeignKey(User, unique=True)
def __unicode__(self):
return self.user.username
def createUserProfile(sender, instance, **kwargs):
print "creating profile"
UserProfile.objects.get_or_create(user=instance)
user_registered.connect(createUserProfile, sender=User)
मैं Pycharm उपयोग कर रहा हूँ डिबग करने के लिए, और user_registered.connect पर मेरे ब्रेकप्वाइंट बहुत शुरुआत में() मारा जाता है। तो मुझे लगता है कि कनेक्ट() सही ढंग से पंजीकृत किया जा रहा है। हालांकि, मुझे अभी भी createUserProfile चलाने के लिए नहीं दिख रहा है। मैं और कुछ और याद कर रहा हूँ?
धन्यवाद!
उत्तर: दोह। मेरा कनेक्ट और रिसीवर कोड गलत था। सही कोड:
def createUserProfile(sender, user, request, **kwargs):
UserProfile.objects.get_or_create(user=user)
user_registered.connect(createUserProfile)
यह एहसास के बाद मैं एक मॉड्यूल है जो सर्वर स्टार्टअप पर आयात किया जाता है में Django पंजीकरण में signals.py पढ़
मैंने अपना कोड आपके उत्तर के अनुसार बदल दिया, लेकिन अभी भी कोई भाग्य नहीं है। कृपया मेरे संपादन की जांच करें। आपका बहुत बहुत धन्यवाद! – rabbid