1

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

在此处输入图像描述

我的 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", 
)

我怎样才能做到这一点?

4

1 回答 1

3

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

所以在你的模型文件中有这个

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 rest 应该使用此用户模型,就像您访问此表单页面时一样

我希望这有帮助!

编辑

我相信这应该自动处理密码,因为它扩展了 AbtractBaseUser,如果没有,请告诉我

于 2016-04-22T18:26:23.533 回答