1. Создание пользовательской модели пользователя
Документация хороша, когда дело доходит до Указание пользовательской модели пользователя .
В нашем файле 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. Создание пользовательского диспетчера пользователей
Теперь следующим шагом является создание пользовательского диспетчера пользователей , что рекомендовано Django.
Поэтому мы создаем класс, подобный
class ProfilesManager(BaseUserManager):
...
В этом классе необходимо переопределить два метода, а именно create_user () и create_superuser () , чтобы определить, что происходит при создании пользователя и когда создается суперпользователь, соответственно.
Затем нам нужно сообщить классу 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. Задайте пользовательскую модель
Go в файле settings.py и добавьте свойство AUTH_USER_MODEL , указав, какую пользовательскую модель Django следует использовать.
AUTH_USER_MODEL = 'appName.Profiles'
4. Выполните миграции
Чтобы зафиксировать внесенные выше изменения, нужно выполнить миграцию , запустив
python manage.py makemigrations
5. Регистрация пользователя в REST API
Поскольку мы создали модель, нам просто нужно создать сериализаторы , views и urls.