2012-02-17 3 views
3

Я пытаюсь настроить регистрационную форму Django. У меня есть проект mysite, в котором я создал registration1 приложение.Пользовательская форма регистрации django

MySite/регистрации1/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, который вводится пользователем?

+0

что именно вы пытаетесь сделать ? Вы просто хотите добавить дополнительную информацию в профиль пользователя во время регистрации? –

+0

Да, я хочу добавить дополнительную информацию во время регистрации, а также удалить это имя пользователя – user1163236

ответ

6

Я предлагаю вам наследовать и переопределить некоторые методы с использованием любого из двух стандартных движков:

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

или, если вам нужно бакэнд с подтверждением по электронной почте:

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

Спасибо за ответ, который действительно помог – user1163236

+5

Как вы думаете, это может быть ответ на ваш вопрос? Не могли бы вы отметить в этом случае? – ramusus

Смежные вопросы