无法登录在django管理员后端创建的超级用户

我正在尝试在django管理员后端创建超级用户,但由于某种原因我无法让他们登录。这是我的用户类,


class User(AbstractBaseUser, PermissionsMixin):

    email = models.EmailField(unique=True, max_length=255)

    mobile = PhoneNumberField(null=True)

    username = models.CharField(null=False, unique=True, max_length=255)

    full_name = models.CharField(max_length=255, blank=True, null=True)

    is_staff = models.BooleanField(default=False)

    is_superuser = models.BooleanField(default=False)

    is_active = models.BooleanField(default=False)



    USERNAME_FIELD = 'email'

    REQUIRED_FIELDS = ['username']

    objects = UserManager()

这是相关的后端设置。


OAUTH2_PROVIDER = {

    # this is the list of available scopes

    'ACCESS_TOKEN_EXPIRE_SECONDS': 60 * 60 * 24,

    'SCOPES': {'read': 'Read scope', 'write': 'Write scope', 'groups': 'Access to your groups'},

    'OAUTH2_BACKEND_CLASS': 'oauth2_provider.oauth2_backends.JSONOAuthLibCore',

}


AUTHENTICATION_BACKENDS = (

        'django.contrib.auth.backends.ModelBackend',

)


# REST Framework

REST_FRAMEWORK = {

    'DEFAULT_AUTHENTICATION_CLASSES': (

        'oauth2_provider.contrib.rest_framework.OAuth2Authentication',

    ),

    'DEFAULT_PERMISSION_CLASSES': (

        'rest_framework.permissions.IsAuthenticated',

    ),

}

我正在检查创建表单上的is_staff和is_superuser是否正确,仍然一无所获。创建的超级用户无法登录到管理后端。我在这里做错什么了。


慕田峪7331174
浏览 573回答 2
2回答

慕运维8079593

首先,您正在使用自定义用户模型。在您的设置文件中,您是否告诉django使用您的模型而不是默认的auth.models.User?第二,您正在create_superuser函数中调用self.create_user。您是否也覆盖create_user函数?如果是,请提供实施方案。更新您不需要像以前那样更改实现用户管理器的功能。如果您在django.auth.models中查看UserManger的实现。您可以从那里获得灵感,并且避免犯错-例如:创建标准用户时不保存模型,因为您不调用保存方法。我建议像这样更改您的UserManager:class UserManager(BaseUserManager):    use_in_migrations = True    def _create_user(self, email, password, **extra_fields):        if not email:            raise ValueError('The given email must be set')        email = self.normalize_email(email)        user = self.model(email=email, **extra_fields)        user.set_password(password)        user.save(using=self._db)        return user    def create_user(self, email, password=None, **extra_fields):        extra_fields.setdefault('is_staff', False)        extra_fields.setdefault('is_superuser', False)        extra_fields.setdefault('is_active', False)        return self._create_user(email, password, **extra_fields)    def create_superuser(self, email, password, **extra_fields):        extra_fields.setdefault('is_staff', True)        extra_fields.setdefault('is_superuser', 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python