django-registration 0.8信号不起作用

时间:2010-09-27 20:24:22

标签: django django-registration

嘿那里, 现在我在扩展django-registration post的dmitko教程基础上工作,一切都很好,只是我无法正确接收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 个答案:

答案 0 :(得分:3)

必须在调用信号之前启动Signal的侦听器 - 在注册信号之前尝试在models.py中导入ragbackend.py - 如果它将开始工作,你就可以了解解决方案。

也不要使用print,而是使用python内置日志记录模块。 您也可以使用ie运行调试会话。 ipdb查看是否收到信号 如果用户已创建,您可以编写简单的单元测试或doctest来验证。