自定义django注册表

时间:2012-02-17 02:45:06

标签: django django-forms django-registration

我正在尝试自定义Django注册表单。我有mysite项目,我在其中创建了registration1 app。

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'

我还想将原始Django注册表单中的用户名替换为用户输入的unique_id?

1 个答案:

答案 0 :(得分:6)

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

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

或者如果您需要带有电子邮件确认的后端:

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