Джанго-регистрация 0,8 сигнал не работает - PullRequest
0 голосов
/ 28 сентября 2010

Привет, Сейчас я работаю над этим учебным пособием по расширению django-регистрация , все прошло нормально, просто я не могу получить сигнал user_registered.

forms.py

from django import forms
from registration.forms import RegistrationForm
from models import UserProfile

class UserProfileForm(RegistrationForm):
   fullname = forms.CharField(max_length=200)
   address = forms.CharField(max_length=200)

urls.py

    from django.conf.urls.defaults import *
    from registration.views import register
    from forms import UserProfileForm
    import regbackend
    urlpatterns = patterns('',
      url(r'^accounts/register/$', register, {'backend': 'registration.backends.default.DefaultBackend','form_class': UserProfileForm}, name='registration_register'),
 (r'^accounts/', include('registration.backends.default.urls')),
    )

regbackend.py

from forms import UserProfileForm
from models import UserProfile

def user_created(sender, user, request, **kwargs):
   form = UserProfileForm(request.POST)
   data = UserProfile(user=user)
   data.fullname = form.cleaned_data["fullname"]
   data.address = form.cleaned_data["address"]
   print "USER CREATED SIGNALS!"
   data.save()

from registration.signals import user_registered
user_registered.connect(user_created)  
print "REGBACKEND!"

Я могу заставить их все работать нормально, но не могу заставить свой сигнал правильно подключиться к моему методу user_created. Метод печати - это просто способ проверить коды. Не удалось получить user_created для печати «ПОЛЬЗОВАТЕЛЬСКИЕ СИГНАЛЫ!».

Есть мысли ??

1 Ответ

3 голосов
/ 28 сентября 2010

Слушатель сигнала должен быть инициирован перед вызовом сигнала - попробуйте импортировать ragbackend.py в models.py перед регистрацией сигнала - если он начнет работать, у вас есть подсказка о решении.

Также не используйте print, используйте вместо этого встроенный модуль регистрации python. Вы также можете запустить сеанс отладки с помощью ie. ipdb, чтобы увидеть, если сигнал получен и если пользователь создан, то вы можете написать простой юнит-тест или doctest, чтобы проверить это.

...