我可以强制用户在django-registration中创建唯一的电子邮件地址吗?
答案 0 :(得分:16)
对于更高版本的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'),
)
答案 1 :(得分:13)
from registration.forms import RegistrationFormUniqueEmail
url(r'^accounts/register/$', 'registration.views.register',
{'form_class': RegistrationFormUniqueEmail,
'backend': 'registration.backends.default.DefaultBackend'},
name='registration_register'),
答案 2 :(得分:5)
django-registration源代码中包含多种形式 - 一种是RegistrationFormUniqueEmail
,可能对您有帮助......
P.S。您可以通过更改默认后端或通过实现自定义后端来调整要使用的表单,您可以在其中返回相应的表单类,请参阅:http://bitbucket.org/ubernostrum/django-registration/src/073835a4269f/registration/backends/default/init.py#cl-118
答案 3 :(得分:4)
正如miku所指出的那样,你应该只使用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分钟的人数,所以希望值得强制失败]
答案 4 :(得分:3)
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))
答案 5 :(得分:2)
从您的用户模型创建注册表单就足够了。如果电子邮件地址在那里被定义为唯一,则表单将在提交重复地址时输出错误。
查看here了解详情。
正如Dominic所指出的那样,你无法使用内置的用户个人资料进行此操作。您必须按照here所述创建自己的用户配置文件来扩展它,并使其包含唯一的电子邮件地址。
答案 6 :(得分:1)
对于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')) ]