Могу ли я заставить пользователей создавать уникальные адреса электронной почты в django-регистрации?
Django-регистрация, сила уникальной электронной почты
Ответ 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')) ]