2016-04-22 191 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