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打印“用户创建的信号!”。
有什么想法吗?
答案 0 :(得分:3)
必须在调用信号之前启动Signal的侦听器 - 在注册信号之前尝试在models.py中导入ragbackend.py - 如果它将开始工作,你就可以了解解决方案。
也不要使用print,而是使用python内置日志记录模块。 您也可以使用ie运行调试会话。 ipdb查看是否收到信号 如果用户已创建,您可以编写简单的单元测试或doctest来验证。