Подтвердить что ты не робот

Django-регистрация, сила уникальной электронной почты

Могу ли я заставить пользователей создавать уникальные адреса электронной почты в django-регистрации?

4b9b3361

Ответ 1

Для более поздних версий django_registration (которые используют представления на основе классов) вы можете сделать это:

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'),
)

Ответ 2

из rych answer, я тестировал, что следующие работает нормально - он использует только urls.py, вам не нужно писать другую форму cusotmer.

from registration.forms import RegistrationFormUniqueEmail

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

Ответ 3

django-registration имеет несколько форм, включенных в исходный код: один - RegistrationFormUniqueEmail, который может помочь вам...


P.S. Вы можете настроить форму для использования, изменив бэкэнд по умолчанию или внедряя пользовательский, где вы возвращаете соответствующий класс формы, см.: http://bitbucket.org/ubernostrum/Джанго-регистрация/SRC/073835a4269f/регистрация/бэкэнды/по умолчанию / INIT.py # сл-118

Ответ 4

Как отметил Мику, вы должны просто использовать RegistrationFormUniqueEmail.

Если вы реализуете в соответствии с документацией и ответами на сообщения об ошибках (по состоянию на середину 2011 года) вы, вероятно, получите исключение вроде:

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

ваш urlconf должен выглядеть так, чтобы правильно указать этот сервер:

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

[пожалуйста, извините дополнительный ответ, так как это относится к комментарию к правильному ответу miku; У меня нет права комментировать, но этот совет может сэкономить, по крайней мере, несколько человек по 15 минут каждый, так что, надеюсь, стоит вынужденный faux-pas]

Ответ 5

Достаточно создать свою регистрационную форму из вашей модели пользователя. Если адрес электронной почты определен как уникальный, форма выведет ошибку для отправки для повторяющихся адресов.

Посмотрите здесь для деталей.

Как указывает Доминик, вы не сможете сделать это со встроенным профилем пользователя. Вы должны расширить его, создав свой собственный профиль пользователя, как описано здесь, и укажите его уникальный адрес электронной почты.

Ответ 6

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))

Ответ 7

Для уникальных адресов электронной почты в django-registration-redux 1.4.

В url.py добавьте следующее

from registration.forms import RegistrationFormUniqueEmail

from registration.backends.default.views import RegistrationView

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

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

]