TypeError:create_user()缺少2个必需的位置参数:';电子邮件';和';密码';在Django Rest框架中
我试图创建一个超级用户与电子邮件和密码只,但我得到上述错误TypeError:create_user()缺少2个必需的位置参数:';电子邮件';和';密码';在Django Rest框架中,django,api,authentication,django-rest-framework,superuser,Django,Api,Authentication,Django Rest Framework,Superuser,我试图创建一个超级用户与电子邮件和密码只,但我得到上述错误 class CustomUserManager(BaseUserManager): """ Custom user model manager where email is the unique identifiers for authentication instead of usernames. """ def create_user
class CustomUserManager(BaseUserManager):
"""
Custom user model manager where email is the unique identifiers
for authentication instead of usernames.
"""
def create_user(self, first_name, last_name, email, password, **extra_fields):
"""
Create and save a User with the given email and password.
"""
if not email:
raise ValueError("The email must be set")
first_name = first_name.capitalize()
last_name = last_name.capitalize()
email = self.normalize_email(email)
user = self.model(
first_name=first_name, last_name=last_name, email=email, **extra_fields
)
user.set_password(password)
user.save()
return user
def create_superuser(self, email, password, **extra_fields):
"""
Create and save a SuperUser with the given email and password.
"""
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
extra_fields.setdefault('is_active', True)
if extra_fields.get('is_staff') is not True:
raise ValueError(_('Superuser must have is_staff=True.'))
if extra_fields.get('is_superuser') is not True:
raise ValueError(_('Superuser must have is_superuser=True.'))
return self.create_user(email, password, **extra_fields)
class CustomUser(AbstractUser):
username = None
#email = models.EmailField(_('email address'), unique=True)
email = models.EmailField(unique=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = CustomUserManager()
def __str__(self):
return self.email
运行py manage.py createsuperuser后,它只要求输入admin和password,我提供了相应的字段,但在用yes绕过密码验证后,它给出了上述错误
class CustomUserManager(BaseUserManager):
"""
Custom user model manager where email is the unique identifiers
for authentication instead of usernames.
"""
def create_user(self, first_name, last_name, email, password, **extra_fields):
"""
Create and save a User with the given email and password.
"""
if not email:
raise ValueError("The email must be set")
first_name = first_name.capitalize()
last_name = last_name.capitalize()
email = self.normalize_email(email)
user = self.model(
first_name=first_name, last_name=last_name, email=email, **extra_fields
)
user.set_password(password)
user.save()
return user
def create_superuser(self, email, password, **extra_fields):
"""
Create and save a SuperUser with the given email and password.
"""
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
extra_fields.setdefault('is_active', True)
if extra_fields.get('is_staff') is not True:
raise ValueError(_('Superuser must have is_staff=True.'))
if extra_fields.get('is_superuser') is not True:
raise ValueError(_('Superuser must have is_superuser=True.'))
return self.create_user(email, password, **extra_fields)
class CustomUser(AbstractUser):
username = None
#email = models.EmailField(_('email address'), unique=True)
email = models.EmailField(unique=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = CustomUserManager()
def __str__(self):
return self.email
您正在将
email
和password
作为位置参数传递给您创建的create\u user
方法,但它需要4个位置参数。您提供的参数将被传递到first\u name
和last\u name
中,而不是email
和密码中。只需将某些内容传递到这些字段中,或使其不必