Как использовать в Django пользовательские таблицы пользователей, не являющиеся расширенной моделью пользователя?
модель пользовательского использования
class CustomUser(models.Model):
account = models.CharField(max_length=255, unique=True)
name = models.CharField(max_length=255)
password = models.CharField(max_length=255)
mobile = models.CharField(max_length=255, unique=True)
email = models.CharField(max_length=255, unique=True)
settings.py
AUTH_USER_MODEL = 'user.CustomUser'
Как я могу использовать пользовательскую модель для выполнения функций регистрации и входа, можете ли вы дать мне совет или ссылки? Спасибо
Создание пользовательской модели пользователя отличается от других моделей. Задание должно быть выполнено
- Модель пользовательского пользователя должна наследовать модель "AbstractBaseUser".
- Убедитесь, что "USERNAME_FIELD", "REQUIRED_FIELDS" определены в пользовательской модели пользователя.
- Определите пользовательский менеджер для пользовательской модели пользователя, который переопределяет методы "create_user", "create_staff" и "create_superuser", обеспечивающие гибкость при создании пользователей.
Пользовательский менеджер
class CustomUserManager(BaseUserManager):
def save_user(self, email, password, mobile_number, **other_fields):
if not email:
raise ValueError(_('Please provide valid email address.'))
user = self.model(email=self.normalize_email(email), mobile_number=mobile_number, **other_fields)
user.set_password(password)
user.save()
# Add any permissions or groups to the user.
return user
def create_user(self, email, password, mobile_number, **other_fields):
# set any fields of CustomUser to True or False depending on the role
# Perform any customization required to the field values.
# make sure user doesn't have additional privileges.
return save_user(self, email, password, mobile_number, **other_fields)
def create_staff(self, email, password, mobile_number, **other_fields):
# set any fields of CustomUser to True or False depending on the role
# Perform any customization required to the field values.
# Make sure user has staff related privilege by setting corresponding field
# to true.
return save_user(self, email, password, mobile_number, **other_fields)
def create_superuser(self, email, password, mobile_number, **other_fields):
# set any fields of CustomUser to True or False depending on the role
# Perform any customization required to the field values.
# Make sure user has superuser related privilege by setting corresponding
# field to true.
return save_user(self, email, password, mobile_number, **other_fields)