0

嘿,现在我在 dmitko 扩展django-registration post教程的基础上工作,一切正常,只是我无法正确接收 user_registered 信号。

表格.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)

网址.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 打印“用户创建的信号!”。

有什么想法吗??

4

1 回答 1

3

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

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

于 2010-09-27T20:39:41.083 回答