如何使用Django的注册不同的看法?(How to use different view for

2019-09-02 00:12发布

我一直在试图让Django的注册使用的视图RegistrationFormUniqueEmail,并从该解决方案如下Django的注册问题 。 我已经把我的urls.py到

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注册0.9b1。

Answer 1:

您正在使用Django的登记版本已经被重写并使用基于类的观点。 这意味着需要在您的urls.py.一种不同的方法

首先,你需要继承RegistrationView,并设置自定义窗体类。

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

class RegistrationViewUniqueEmail(RegistrationView):
    form_class = RegistrationFormUniqueEmail

然后,使用自定义RegistrationViewUniqueEmail子类在您的网址。 与其他基于类的观点,你必须调用as_view()。

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

确保您的自定义视图registration_register你来包括默认的注册网址之前,否则将无法使用。



Answer 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.pyRegistrationForm在您的应用程序forms.py



文章来源: How to use different view for django-registration?