2

I use Django 1.5 + django-registration 0.9...

How to make email field unique in model User?

from registration.forms import RegistrationFormUniqueEmail

url(r'^accounts/register/$', 'registration.views.register',
    {'form_class': RegistrationFormUniqueEmail,
     'backend': 'registration.backends.default.DefaultBackend'},       
     name='registration_register'),

This solution is not suitable

Could not import registration.views.register. View does not exist in module registration.views.
Olga
  • 1,395
  • 2
  • 25
  • 34
  • You can extend `AbstractBaseUser` model and create your own user model. https://docs.djangoproject.com/en/dev/topics/auth/customizing/#specifying-a-custom-user-model – Bibhas Debnath May 23 '13 at 15:14
  • Maybe this: http://stackoverflow.com/questions/8909819/django-registration-form-and-registration-unique-email-form – Paulo Bu May 23 '13 at 15:29
  • @Bibhas django-registration 0.9 wants to work with a extend user model? – Olga May 23 '13 at 16:07

3 Answers3

5

Many thanks, @Alasdair How to use different view for django-registration?

urls.py:

from registration.backends.default.views import RegistrationView
from registration.forms import RegistrationFormUniqueEmail

class RegistrationViewUniqueEmail(RegistrationView):
    form_class = RegistrationFormUniqueEmail

urlpatterns = patterns('',
    ....
    url(r'^user/register', RegistrationViewUniqueEmail.as_view(),
                    name='registration_register'),
    ...
Community
  • 1
  • 1
Olga
  • 1,395
  • 2
  • 25
  • 34
3

Another approach is to pass the form class into the as_view() method directly as in the following example:

url(r'^user/register/$', RegistrationView.as_view(
    form_class=RegistrationFormUniqueEmail),
    name='registration_register'),
Dan Goldin
  • 957
  • 13
  • 32
0

A complete urls.py for this:

from django.conf.urls import patterns, include, url
from registration.forms import RegistrationFormUniqueEmail
from registration.backends.default.views import RegistrationView

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'django_registration_demo.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    url(r'^accounts/', include('django.contrib.auth.urls')),
    # enable unique email registration feature
    url(r'^accounts/register/$',
        RegistrationView.as_view(form_class=RegistrationFormUniqueEmail),
        name='registration_register'),
    url(r'^accounts/', include('registration.backends.default.urls'))
)

I've also create a complete demo for django-registration, which enables unique email feature , see: https://github.com/xiaohanyu/django-registration-demo

Xiao Hanyu
  • 1,402
  • 16
  • 11