2013-05-04 3 views
4

Я пытаюсь получить django-регистрацию, чтобы использовать представление RegistrationFormUniqueEmail и после решения этого django-registration question. Я установил свои urls.py наКак использовать разные виды django-регистрации?

from django.conf.urls import patterns, include, url 

from registration.forms import RegistrationFormUniqueEmail 

from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    (r'^users/', include('registration.backends.default.urls')), 
    url(r'^users/register/$', 'registration.backends.default.views.RegistrationView', 
     {'form_class': RegistrationFormUniqueEmail, 
     'backend': 'registration.backends.default.DefaultBackend'},  
     name='registration_register'), 
) 

Однако я все же могу создать несколько учетных записей с тем же адресом электронной почты. В чем проблема? Должна ли django-регистрация использовать представление, которое я указал? В настоящее время я использую django-registration 0.9b1.

ответ

17

Используемая вами версия регистрации Django была переписана для использования представлений на основе классов. Это означает, что в вашем urls.py требуется другой подход.

Во-первых, вам необходимо подклассифицировать RegistrationView и установить собственный класс формы.

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

class RegistrationViewUniqueEmail(RegistrationView): 
    form_class = RegistrationFormUniqueEmail 

Затем, используя свой собственный подкласс RegistrationViewUniqueEmail в своих URL-адресах. Как и в других классах, вы должны вызвать as_view().

url(r'^user/register/$', RegistrationViewUniqueEmail.as_view(), 
        name='registration_register'), 

Убедитесь, что настроен вид registration_register приходит, прежде чем включать регистрацию по умолчанию URL'ы, в противном случае он не будет использоваться.

+2

Я сделал, как вы сказали, и он по-прежнему делает не работает – bab

+0

Я обновил свой ответ. – Alasdair

+0

@Alasdair, Pylint для url (r '^ user/register/$', RegistrationViewUniqueEmail.as_view(), name = 'registration_register') пишет: ID: E1120 В вызове функции не передается значение параметра cls. Что это? – Olga

2

Версия 1,2 из django-registration-redux позволяет уникальную возможность по электронной почте со следующими urls.py моделей:

url(r'^accounts/register/$', RegistrationView.as_view(form_class=RegistrationFormUniqueEmail), name='registration_register'), 
url(r'^accounts/', include('registration.backends.default.urls')), 

Если вам нужно сделать что-то больше, как конкретный вариант URL, вы можете унаследовать RegistrationView в приложении views.py и RegistrationForm в приложении forms.py

Смежные вопросы