嘿, 现在即时通讯的延伸 Django的注册后上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打印“用户创建SIGNALS!”

任何想法??

有帮助吗?

解决方案

注册一个信号之前尝试导入ragbackend.py在models.py - -

信号的监听器必须调用信号之前启动的,如果它会开始工作,你有关于解决方案的线索

也不要使用打印,使用Python内置记录模块来代替。 您也可以运行在IE调试会话。 IPDB以查看是否接收到的信号和 如果在创建用户,OT可以编写简单的单元测试或文档测试来验证

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top