2016-04-22 74 views
1

我正在使用Django-rest-auth进行身份验证和注册。我正在使用电子邮件通过密码登录用户。 我想在注册时存储用户的名字和姓氏(也许只有几个字段)即在注册表单上的客户端将有以下字段(电子邮件,密码,名字,姓氏等)。 )。目前注册表格只有电子邮件,密码1和密码2字段,注册基本成功。Django rest auth扩展注册表

enter image description here

我的settings.py有以下几点:

#This is required otherwise it asks for email server 
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 
ACCOUNT_AUTHENTICATION_METHOD = 'email' 
ACCOUNT_EMAIL_REQUIRED = True 
ACCOUNT_USERNAME_REQUIRED = False 

#Following is added to enable registration with email instead of username 
AUTHENTICATION_BACKENDS = (
# Needed to login by username in Django admin, regardless of `allauth` 
"django.contrib.auth.backends.ModelBackend", 

#`allauth` specific authentication methods, such as login by e-mail 
"allauth.account.auth_backends.AuthenticationBackend", 
) 

我怎样才能做到这一点?

+0

你能澄清你想做什么?您是否想要扩展用户模型以添加更多字段? –

+0

我不确定是否实际上扩展了用户模型,现在我必须在我的管理界面中进行操作,并为用户手动添加名字,姓氏等属性。我希望在注册表单中包含这些字段,以便在成功注册时自动为新创建的用户保存此数据。 – Nitish

+0

好吧,我想我知道你想做什么,看看我的答案 –

回答

2

如果您想扩展注册表单,您将需要创建自己的具有更多字段的自定义用户。

在你的模型文件

所以有这个

from django.contrib.auth.models import (
    AbstractBaseUser, PermissionsMixin, 
) 

class CustomUser(AbstractBaseUser, PermissionsMixin): 
    email = models.EmailField(max_length=254, unique=True) 
    first_name = models.TextField(default='') 
    last_name = models.TextField(default='') 
    #any other fields you want 

    USERNAME_FIELD = 'email' 
在设置

那么你要这个

AUTH_USER_MODEL = 'app_name.CustomUser' 

然后Django的休息应该使用这个用户模型,当你访问这个表单页面

我希望这有助于!

编辑

我相信,因为它延伸AbtractBaseUser这应该自动处理的密码,让我知道,如果它不

+0

它给了我在控制台> django.core.exceptions.ImproperlyConfigured:AUTH_USER_MODEL指模型'flights.CustomUser',尚未安装。在迁移之前,我应该迁移吗? – Nitish

+0

是的,你需要迁移:) –

+0

当我做移植时,它给了我同样的错误 – Nitish