Дорогой парень, Джанго Кодер,
Я думаю, что это лучший способ сделать это. Удачи!
Первый шаг - создать форму, которую вы хотите использовать .
проект / счета / forms.py
from django import forms
from registration.forms import RegistrationForm
from django.contrib.auth.models import User
class Email(forms.EmailField):
def clean(self, value):
super(Email, self).clean(value)
try:
User.objects.get(email=value)
raise forms.ValidationError("This email is already registered. Use the 'forgot password' link on the login page")
except User.DoesNotExist:
return value
class UserRegistrationForm(forms.Form):
password1 = forms.CharField(widget=forms.PasswordInput(), label="Password")
password2 = forms.CharField(widget=forms.PasswordInput(), label="Repeat your password")
#email will be become username
email = Email()
def clean_password(self):
if self.data['password1'] != self.data['password2']:
raise forms.ValidationError('Passwords are not the same')
return self.data['password1']
Здесь вы создаете файл для переопределения функции register () в django-registration.
Проект / счета / regbackend.py
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
from registration.backends import default
class Backend(default.DefaultBackend):
def register(self, request, **kwargs):
email, password = kwargs['email'], kwargs['password1']
username = email
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)
return new_user
Направьте ваши URL-адреса на пути, которые вы хотите использовать.
Проект / urls.py
(r'^accounts/', include('registration.backends.default.urls')),
Сообщите своим URL-адресам использовать пользовательский бэкэнд для просмотра регистрации. Кроме того, импортируйте созданную вами форму и добавьте ее в URL для обработки представлением.
проект / счета / urls.py
from django.conf.urls.defaults import *
from registration.backends.default.urls import *
from accounts.forms import UserRegistrationForm
urlpatterns += patterns('',
#customize user registration form
url(r'^register/$', 'registration.views.register',
{
'backend': 'accounts.regbackend.Backend',
'form_class' : UserRegistrationForm
},
name='registration_register'
),
)
Надеюсь, что это работает!
Матф