user1163236
user1163236

Reputation: 223

Custom django registration form

I am trying to customize the Django registration form. I have mysite project in which I have created 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'),

But this is giving me error

'MyBackend' object has no attribute 'registration_allowed'

I also want to replace username in original Django registration form with unique_id which is entered by user?

Upvotes: 3

Views: 5167

Answers (1)

ramusus
ramusus

Reputation: 8305

I suggest to you to inherit and override some methods using any of two default backends:

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

or if you need backend with email confirmation:

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

Upvotes: 6

Related Questions