2012-02-17 146 views
3

我想自定义Django注册表单。我有mysite项目,我在其中创建了registration1应用程序。自定义django注册表

mysite的/ registration1/forms.py

from registration.forms import RegistrationForm 
from django import forms 
class UserRegistrationForm(RegistrationForm): 
    unique_id = forms.CharField(min_length=12,max_length=12,label=("Unique id")) 

mysite的/ regbackend.py

import profile 
from registration1.forms import UserRegistrationForm 
from django.conf import settings 
from django.contrib.sites.models import RequestSite 
from django.contrib.sites.models import Site 

from registration import signals 
from registration.forms import RegistrationForm 
from registration.models import RegistrationProfile 

class MyBackend(object): 

    def register(self, request, **kwargs): 
     username, email, password = kwargs['username'],kwargs['email'], kwargs['password1'] 
     if Site._meta.installed: 
     site = Site.objects.get_current() 
     else: 
      site = RequestSite(request) 
     new_user = RegistrationProfile.objects.create_inactive_user(username, email, 
                   password, site) 
     signals.user_registered.send(sender=self.__class__, 
           user=new_user, 
           request=request) 
     user = User.objects.get(username=username) 
     user.unique_id=kwargs['unique_id'] 
     address_user = Address() 
     address_user.save() 
     contact_user = Contact(address=address_user,email=user.email) 
     contact_user.save() 

     address_company = Address() 
     address_company.save() 
     contact_company = Contact(address=address_company) 
     contact_company.save() 
     company = Company(contact=contact_company, admin=user) 
     company.save() 
     user_profile = UserProfile(user=user,contact=contact_user,position='',company=company ) 
    user_profile.save() 
    user.save() 

     return new_user 

mysite的/ urls.py

from registration.views import register 
import registration.backends.default.urls as regUrls 
import mysite.regbackend 
from registration1.forms import UserRegistrationForm 
url(r'^accounts/register/$', register,{'backend':'mysite.regbackend.MyBackend','form_class': UserRegistrationForm},name='registration_register'), 

但是,这是给我的错误

'MyBackend' object has no attribute 'registration_allowed' 

我也想与UNIQUE_ID原Django的登记表是由用户输入的用户名替换?

+0

究竟是你想怎么办?您是否只想在注册时向用户个人资料添加额外的信息? – 2012-02-17 06:56:13

+0

是的,我想在注册时添加额外的信息,并删除该用户名字段 – user1163236 2012-02-17 10:25:33

回答

6

我建议你继承和使用任何两个默认后端覆盖一些方法:

.... 
from registration.backends.default import SimpleBackend 
class MyBackend(SimpleBackend): 
    .... 

,或者如果你需要电子邮件确认后端:

.... 
from registration.backends.default import DefaultBackend 
class MyBackend(DefaultBackend): 
    .... 
+0

感谢您的回答真的有帮助 – user1163236 2012-03-08 17:43:19

+5

您认为这可以解决您的问题吗?你能在这种情况下标记吗? – ramusus 2012-03-10 09:24:16