2

我使用 Django 1.5 + django-registration 0.9 ...

如何使模型用户中的电子邮件字段唯一?

from registration.forms import RegistrationFormUniqueEmail

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

此解决方案不适合

Could not import registration.views.register. View does not exist in module registration.views.
4

3 回答 3

5

非常感谢,@Alasdair 如何为 django-registration 使用不同的视图?

网址.py:

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

class RegistrationViewUniqueEmail(RegistrationView):
    form_class = RegistrationFormUniqueEmail

urlpatterns = patterns('',
    ....
    url(r'^user/register', RegistrationViewUniqueEmail.as_view(),
                    name='registration_register'),
    ...
于 2013-05-23T16:41:49.357 回答
3

另一种方法是将表单类直接传递给 as_view() 方法,如下例所示:

url(r'^user/register/$', RegistrationView.as_view(
    form_class=RegistrationFormUniqueEmail),
    name='registration_register'),
于 2013-06-18T21:10:08.590 回答
0

一个完整的 urls.py :

from django.conf.urls import patterns, include, url
from registration.forms import RegistrationFormUniqueEmail
from registration.backends.default.views import RegistrationView

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'django_registration_demo.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    url(r'^accounts/', include('django.contrib.auth.urls')),
    # enable unique email registration feature
    url(r'^accounts/register/$',
        RegistrationView.as_view(form_class=RegistrationFormUniqueEmail),
        name='registration_register'),
    url(r'^accounts/', include('registration.backends.default.urls'))
)

我还为 django-registration 创建了一个完整的演示,它启用了独特的电子邮件功能,请参阅: https ://github.com/xiaohanyu/django-registration-demo

于 2014-04-12T14:38:40.633 回答