나는 django-registration을 사용하고 있으며, 자동으로 UserProfile을 만들기 위해 신호에 연결하려고합니다.django-registration 자동 생성 UserProfile
신호 정의 :
from django.dispatch import Signal
# A new user has registered.
user_registered = Signal(providing_args=["user", "request"])
신호 장고 등록하여 보내
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)
에는 사용자 프로필을 말할 나위가 생성되고있다. 내가 여기서 무엇을 놓치고 있니?
고맙습니다.
편집 : connect()와 해당 메소드를 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에 매우 시작 내 중단 점에서()는 맞았다. 그래서 connect()가 올바르게 등록되었다고 가정합니다. 그러나, 나는 여전히 실행중인 createUserProfile을 볼 수 없습니다. 내가 놓친 게 있니?
감사합니다.
답 :도. 연결 코드와 수신자 코드가 잘못되었습니다. 올바른 코드 : I는 서버 시작에 수입 된 모듈에
당신은 등록해야
답변에 따라 코드가 변경되었지만 여전히 운이 없습니다. 제 편집 내용을 확인하십시오. 고마워요! – rabbid