在Django中无法登录管理站点

10

我正在完成有关投票的教程,一切都很顺利,直到我尝试登录管理网站时,它只显示:

  

"请为员工帐户输入正确的用户名和密码。请注意,两个字段均可能区分大小写。"

于是我在谷歌上搜索了这个问题,并尝试了我能想到的所有方法。以下是我调查过的所有问题:

  • 数据库未同步: 我已经同步了,但没有任何变化。
  • 没有 django_session 表: 我检查了,表是存在的。
  • 设置出现问题: 我所做的唯一更改是将 'polls.apps.PollsConfig' 添加到 INSTALLED_APPS 中。
  • 用户未正确配置: is_staffis_superuseris_active 都是 True
  • 旧会话: 我检查了 django_session 表,它是空的。
  • 超大的消息 cookie : 我检查了,我甚至没有一个。
  • 在运行 Web 服务器时创建超级用户: 我确实这样做了,但在停止 Web 服务器,创建新用户,重新启动 Web 服务器并尝试使用新用户登录后,它仍然无法工作。
  • URL 模式缺失或错误: 目前我在 mysite/urls.py 中有 url(r"^admin/", admin.site.urls)
  • 输入错误的用户名: 我创建的用户名是 "admin",我输入的也是这个。
  • 服务器命令错误: 我使用的是 python manage.py runserver
  • 数据库出现问题: 我尝试删除数据库,然后重新应用迁移,但没有任何变化。

还有其他事情我没有尝试吗?或者我漏掉了什么?


2
运行 python manage.py createsuperuser - joel goldstick
浏览器禁用了Cookie? - Aya
1
@joelgoldstick 这是我一直在使用的添加用户的方法。它似乎可以正确地添加超级用户,但我仍然无法登录。 - Ian Campos
1
你尝试过重置密码吗? - Sayse
1
@Sayse Når,好的。我没看到那个。 :-) - Ev.
显示剩余6条评论
6个回答

8

我想你可能是通过其他方式创建了这个用户,而不是使用python manage.py createsuperuser

这种情况通常发生在您有两个身份验证系统的情况下。例如,您可能有django内置身份验证和DRF令牌身份验证。

要登录到后端(django管理界面),您需要使用python manage.py createsuperuser

要更改密码,请使用以下命令:

python manage.py changepassword

我确实使用了 python manage.py createsuperuser 命令。但是为什么我需要两个认证系统或者需要修改密码呢? - Ian Campos
这至少需要在Django 3中实现,因为数据库中的密码必须最初通过一些验证(8个字符长且不全为数字),并且必须进行盐加密。请参见https://docs.djangoproject.com/en/3.0/ref/contrib/auth/#django.contrib.auth.models.User.password。 - FearlessFuture

2
有时候最简单的解决方案可以解决巨大的问题。对我来说,只需注释或删除以下内容即可: ```html

```
SESSION_COOKIE_SECURE = True

这就是全部。


在研究清楚这个操作的实际作用之前,我不建议这样做。 - Shadow
这应该包含在生产中,但如果登录问题存在于您的本地开发环境中,则暂时注释掉是可以的。只需确保它在生产中再次激活即可。 - artifex_knowledge

1
如果使用的数据库是默认的sqlite3数据库,并且settings.py文件中的DATABASES属性指向的db.sqlite3文件与manage.py不在同一个目录中,也可能会出现这种情况。

1

请检查您的is_active模型字段。您可能已将其默认值设置为False,这可能是不允许您登录的原因。

如果是这样的-- is_active = models.BooleanField(default=False) --请将其更改为True,或者检查数据库并将创建的超级用户的is_active值更改为1。


0

我的问题是使用正确的设置模块,因为我在本地/本地代理和生产中使用不同的数据库 DJANGO_SETTINGS_MODULE=serverless_django.settings.local_proxy python manage.py createsuperuser 对我有用


0

我认为你应该尝试以下步骤:

  1. 创建新的管理员账户

    python manage.py createsuperuser

  2. 使用新账户登录管理员网站

  3. 重置您的账户密码,并记住它

  4. 使用您原来的账户登录管理员网站


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接