Heroku上的Django不会让我创建一个超级用户

时间:2015-10-22 02:48:45

标签: python django heroku

我已经在heroku上部署了一个django应用程序。这个应用程序在本地运行完美。但是,当我尝试在heroku应用程序上创建一个超级用户,以便我可以访问管理页面时,事情无法正常工作。我跑了:

heroku run python manage.py syncdb
heroku run python manage.py migrate
heroku run python manage.py createsuperuser

它似乎有效。我得到提示选择密码,电子邮件和用户名。然后说明:

Superuser created successfully.

但是,当我尝试在管理面板中登录时,用户名密码组合失败。当我尝试通过以下方式更改帐户密码时:

heroku run python manage.py changepassword admin

我明白了:

CommandError: user 'admin' does not exist

显然,heroku从未真正创造过超人。我在我的智慧结束,我不明白heroku dyno有什么问题。

3 个答案:

答案 0 :(得分:0)

仅运行heroku run python manage.py createsuperuser对我有用。但是@Nils,我想知道settings.py文件中的哪一行需要调整以使其可以用于生产。

答案 1 :(得分:0)

您似乎正在使用诸如sqlite之类的保险丝系统基础数据库。

如您所知,Heroku has an ephemeral filesystem

  

Heroku文件系统是短暂的-这意味着在dyno运行时,对文件系统的任何更改只会持续到dyno关闭或重新启动为止。每个dyno都会使用最新部署中的文件系统的干净副本进行引导

这就是为什么成功创建用户sun的原因,但是在下一个命令(更改传递)中,用户不存在。

我为大多数遇到相同问题的用户写这个答案。

答案 2 :(得分:0)

要检查发生了什么,请尝试两次运行以下行:

heroku run python manage.py migrate
heroku run python manage.py migrate

在一个好的设置中,第一次将运行迁移,而第二次将显示“不应用任何迁移”。如果您看到它两次都运行相同的迁移,则意味着Heroku中的数据库没有从一个调用到另一个调用持续存在,因此您需要更改数据库设置,例如通过connecting a postgres database