我正在尝试在我的项目中使用django-registration,我必须在注册表单中添加两个额外的字段。我的django版本是1.6.2和python 2.7。
我的urls.py
:
from django.conf.urls import patterns, include, url
from registration.views import RegistrationView
from common.forms import UserRegistrationForm
import common.regbackend
urlpatterns = patterns('',
# accounts
url(r'^accounts/register/$', RegistrationView.as_view(form_class=UserRegistrationForm),
{'backend': 'user_profile.backends.RegistrationBackend'},
name='registration_register'),
url(r'^accounts/', include('registration.backends.default.urls')),
# home
url(r'^$', 'home.views.home', name='home'),
)
我的common/models.py
:
from django.db import models
class Profile(models.Model):
key = models.CharField(max_length=100)
code = models.CharField(max_length=100)
def __unicode__(self):
return '%s' % self.key
class Meta:
ordering = ['key']
verbose_name = "Profile"
verbose_name_plural = "Profiles"
我的common/forms.py
:
from django import forms
from registration.forms import RegistrationForm
class UserRegistrationForm(RegistrationForm):
key = forms.CharField(label='Key')
code = forms.CharField(label='VCode')
最后,common/regbackend.py
from forms import *
from models import Profile
from common.forms import UserRegistrationForm
def user_created(sender, user, request, **kwargs):
print 'ok' # breakpoint here!
return
'''
form = UserRegistrationForm(request.POST)
data = Profile(user=user)
data.key = form.data["key"]
data.code = form.data["code"]
data.save()
'''
from registration.signals import user_registered
user_registered.connect(user_created)
当我填写表格并尝试发送时,我得到了
NotImplementedError at /accounts/register/
我的应用程序永远不会停在common/regbackend.py
文件的断点处。
追溯到此为止:
/Users/null/.virtualenvs/tools/lib/python2.7/site-packages/registration/views.py in register
在这个功能:
def register(self, request, **cleaned_data):
"""
Implement user-registration logic here. Access to both the
request and the full cleaned_data of the registration form is
available here.
"""
raise NotImplementedError
我试图搜索解决方案(尤其是this,this和this),但大多数都使用django-registration 0.8而我正在使用v1.0,这是完全改写,有些东西不像以前那样工作。我试图将其调整为v1.0,但仍然出现此错误 我该怎么做才能摆脱这个错误?提前谢谢!
答案 0 :(得分:1)
当我填写表单并尝试发送时,我得到
NotImplementedError at /accounts/register/
您的urls.py表明您使用的是自定义注册后端(user_profile.backends.RegistrationBackend
)。您需要为用户注册添加自定义逻辑(如register
方法建议的文档字符串所示)到其RegistrationView
。
根据应用程序的工作方式,让后端从两个包含的注册后端之一继承可能更有意义。
我的应用程序永远不会在断点处停止
print语句与breakpoint不同:如果语句已执行,则会打印" ok"到控制台或日志,但应用程序不会停止或暂停。
我试图搜索解决方案(特别是这个,这个和这个),但是他们中的大多数都在使用django-registration 0.8而且我使用的是v1.0,这是完全重写的,有些东西不能正常工作以前。
从django-registration迁移可能更有意义。 Its maintainer发布了long essay explaining that django-registration 1.0 has issues, but that he no longer uses it and is not maintaining it。