Django-registro, fuerza única de correo electrónico.

¿Puedo obligar a los usuarios a crear direcciones de correo electrónico únicas en el registro de django?

Para versiones posteriores de django_registration (que usan vistas basadas en clases), puede hacer esto:

 from registration.forms import RegistrationFormUniqueEmail from registration.backends.default.views import RegistrationView urlpatterns = patterns('', url(r'^register/$', RegistrationView.as_view(form_class=RegistrationFormUniqueEmail), name='registration_register'), ) 

de la respuesta de rych, probé que lo siguiente funciona bien: solo usa urls.py, no es necesario escribir otro formulario de cusotmer.

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

django-registration tiene varios formularios incluidos en la fuente, uno es RegistrationFormUniqueEmail , que puede ayudarlo …


PS Puede ajustar el formulario para usar cambiando el backend predeterminado o implementando uno personalizado, donde devuelva la clase de formulario apropiada, consulte: http://bitbucket.org/ubernostrum/django-registration/src/073835a4269f/registration/ backends / default / init .py # cl-118

Como señaló miku, simplemente debe utilizar RegistrationFormUniqueEmail.

Si implementa de acuerdo con la documentación y las respuestas del informe de errores (a mediados de 2011), probablemente terminará con una excepción como:

 TypeError at /accounts/register/ register() takes at least 2 non-keyword arguments (1 given) 

su urlconf debe tener este aspecto para especificar correctamente este backend:

 (r'^accounts/register/', 'registration.views.register' {'form_class':RegistrationFormUniqueEmail, 'backend':'registration.backends.default.DefaultBackend' }), (r'^accounts/', include('registration.backends.default.urls')), 

[disculpe la respuesta adicional, ya que esto pertenece como un comentario a la respuesta correcta de miku; No tengo el privilegio de comentar, pero este consejo puede ahorrar al menos a unas pocas personas cada 15 minutos, por lo que, con suerte, vale la pena el paso en falso forzado]

 forms.py from registration.forms import RegistrationFormUniqueEmail class RegistroPerfilForm(RegistrationFormUniqueEmail): first_name= forms.CharField(required=True) last_name= forms.CharField(required=True) kind__of_user= forms.CharField(widget=forms.RadioSelect(choices=TIPO)) 

Debería ser suficiente para crear su formulario de registro a partir de su modelo de usuario. Si la dirección de correo electrónico está definida para ser única allí, el formulario generará un error al enviar las direcciones duplicadas.

Busque aquí para más detalles.

Como señala Dominic, no podrá hacer esto con el perfil de usuario incorporado. Tendrá que ampliarlo creando su propio perfil de usuario como se describe aquí y hacer que contenga una dirección de correo electrónico única.

Para direcciones de correo electrónico únicas en django-registration-redux 1.4.

En url.py agregar siguiente

  desde registration.forms import RegistrationFormUniqueEmail

 desde registration.backends.default.views importar RegistrationView

 urlpatterns = [
  url (r '^ accounts / register / $', RegistrationView.as_view (form_class = RegistrationFormUniqueEmail),
         name = 'registration_register'),

  url (r '^ accounts /', include ('registration.backends.default.urls'))

 ]