Django管理员登录后未重定向。。。答复是200
我正在使用DRF开发一个应用程序,当我尝试登录到我的管理仪表板时,它会给出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文件 “”“ 我今天试
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)