我正在使用Django 1.8的django-registration 2.0.4(https://django-registration.readthedocs.org/en/2.0.4/,https://github.com/ubernostrum/django-registration),我正在尝试自定义注册表单和应用程序本身。虽然我可以自定义表单,但我仍然坚持使用电子邮件作为用户名。
我不需要在Django的后端更改任何内容,因为简单地删除表单中的用户名字段并在后端使用输入的电子邮件作为用户名就足够了。
我已经找到了这个(Django-Registration: Email as username),但它已经有几年的历史了,我还没有设法让它运行起来。
我如何以正确的方式实现所述功能?有没有人用最近的版本解决了这个问题?
修改
因为我被问到代码:没有太多与此问题相关的问题,因为它不是代码问题,而是关于如何扩展或更改django插件的问题。
然而,我目前的,无聊的, forms.py ,就像我链接的链接一样:
class MyCustomForm(forms.Form):
email = Email(required=True)
password1 = forms.CharField(widget=forms.PasswordInput(), label="Password")
password2 = forms.CharField(widget=forms.PasswordInput(), label="Repeat your password")
def clean_password(self):
if self.data['password1'] != self.data['password2']:
raise forms.ValidationError('Passwords are not the same')
return self.data['password1']
urls.py
...
url(r'^accounts/register/$', RegistrationView.as_view(form_class=InsuranceForm), name='registration_register'),
url(r'^accounts/', include('registration.backends.hmac.urls')),
...
答案 0 :(得分:1)
我使用自定义用户模型完成了此操作。
https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#auth-custom-user
上面的文档中有一个完整的示例,您需要稍微修改以实现您的目标。