Django管理员登录后未重定向。。。答复是200

Django管理员登录后未重定向。。。答复是200,django,django-rest-framework,Django,Django Rest Framework,我正在使用DRF开发一个应用程序,当我尝试登录到我的管理仪表板时,它会给出 POST /admin/login/?next=/admin/ HTTP/1.1" 200 2350 但它不会将我重定向到/admin。奇怪的是昨天一切都正常。我也使用React作为前端,我有一个登录页面,它使用了从DRF获取认证令牌。登录页面昨天也起了作用,但今天没有 我创建了一个超级用户,确保该用户具有超级用户权限,并且它仍然不会将我重定向到登录页面。 这是我的settings.py文件 “”“ 我今天试

我正在使用DRF开发一个应用程序,当我尝试登录到我的管理仪表板时,它会给出

POST /admin/login/?next=/admin/ HTTP/1.1" 200 2350
但它不会将我重定向到/admin。奇怪的是昨天一切都正常。我也使用React作为前端,我有一个登录页面,它使用了从DRF获取认证令牌。登录页面昨天也起了作用,但今天没有

我创建了一个超级用户,确保该用户具有超级用户权限,并且它仍然不会将我重定向到登录页面。 这是我的settings.py文件 “”“

我今天试着把这个应用程序部署到Heroku上,虽然我不太确定,但这似乎把事情搞砸了。我昨天做了一个备份,这个备份也不起作用。 还有一件重要的事情要补充,我有一个自定义帐户模型。它是:

class MyAccountManager(BaseUserManager):
    def create_user(self, email, password=None):
        if not email:
            raise ValueError("Users must have an email address")

        user = self.model(
            email=self.normalize_email(email)
        )

        user.set_password(make_password(password))
        user.save(using=self._db)
        return user

    def create_superuser(self, email, password):
        user = self.create_user(
            email=self.normalize_email(email),
            password=password,
        )

        user.is_admin = True
        user.is_staff = True
        user.is_superuser = True
        user.save(using=self._db)

        return user


class Account(AbstractBaseUser):
    email = models.EmailField(verbose_name="email", max_length=60, unique=True)
    store_id = models.IntegerField(verbose_name="Store ID", unique=True, default=0)
    date_joined = models.DateTimeField(verbose_name="Date joined", auto_now_add=True)
    last_login = models.DateTimeField(verbose_name="Last login", auto_now=True)
    is_admin = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)

    USERNAME_FIELD = 'email'

    objects = MyAccountManager()

    def __str__(self):
        return self.email

    def has_perm(self, perm, obj=None):
        return self.is_admin

    def has_module_perms(self, app_label):
        return True

    def save(self, *args, **kwargs):
        created = not self.pk
        super().save(*args, **kwargs)
        if created:
            AvailableAmount.objects.create(user=self, available_amount=0)


@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_auth_token(sender, instance=None, created=False, **kwards):
    if created:
        Token.objects.create(user=instance)

我已经解决了。如果您使用的是自定义用户模型,请确保对超级用户的密码进行哈希运算,即,这将不起作用:

 def create_superuser(self, email, password):
        user = self.create_user(
            email=self.normalize_email(email),
            password=password
        )

        user.is_admin = True
        user.is_staff = True
        user.is_superuser = True
        user.save(using=self._db)
这是因为密码没有被散列,您将无法登录。您需要做的是像这样使用
set\u password

def create_superuser(self, email, password):
    user = self.create_user(
        email=self.normalize_email(email),
    )

user.is_admin = True
user.is_staff = True
user.is_superuser = True
user.set_password(password)
user.save(using=self._db)
如果这对您不起作用,请尝试使用
manage.py changepassword USERNAME
从控制台更改密码。如果更改密码后您能够登录,则很有可能在创建用户时不会散列密码

def create_superuser(self, email, password):
    user = self.create_user(
        email=self.normalize_email(email),
    )

user.is_admin = True
user.is_staff = True
user.is_superuser = True
user.set_password(password)
user.save(using=self._db)