1。创建自定义用户模型
Specifying a custom user model 的文档很好。
在我们的 models.py 中,导入 AbstractBaseUser 和 BaseUserManager。
然后,创建你的类,例如,
class Profiles(AbstractBaseUser):
userId = models.CharField(max_length=36, unique= True)
username = models.CharField(max_lenght=20)
password = models.CharField(max_lenght=256)
is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
...
这里设置USERNAME_FIELD和REQUIRED_FIELDS很重要,定义登录时哪些字段是重要的。
同样在您的自定义用户模型类中,您必须创建两个处理权限所需的函数,即has_perm() 和has_module_perms()。
2。创建自定义用户管理器
现在下一步是创建一个Custom User Manager,这是 Django 推荐的。
所以我们创建一个类
class ProfilesManager(BaseUserManager):
...
在该类中,需要重写两个方法,即create_user() 和create_superuser(),分别定义创建用户和创建超级用户时发生的情况。
然后,我们需要用一个objects参数告诉Profiles类这个ProfilesManager类在哪里。
class Profiles(AbstractBaseUser):
userId = models.CharField(max_length=36, unique= True)
email = models.CharField(max_lenght=20)
password = models.CharField(max_lenght=256)
is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
...
USERNAME_FIELDS = 'userId'
REQUIRED_FIELDS = ['email']
objects = ProfilesManager()
def has_perm(self, perm, obj=None):
return self.is_admin
def has_module_perms(self, app_label):
return True
3。设置用户模型
转到您的 settings.py 并添加一个 AUTH_USER_MODEL 属性,指定 Django 应该使用哪个用户模型。
AUTH_USER_MODEL = 'appName.Profiles'
4。进行迁移
要提交上面所做的更改,必须通过运行 make the migrations
python manage.py makemigrations
5。从 REST API 注册用户
既然我们已经创建了模型,那么我们只需要创建serializers、views 和url。