Heroku 和 Django 运行 服务器

Heroku and Django Running Server

我正在学习本教程:http://tutorial.djangogirls.org/en/domain/README.html

当我执行 python manage.py runserver 时,它工作正常。它也适用于我 运行

heroku ps:scale web=1

然后

heroku open

python manage.py runserver 它显示我的博文和我添加的所有内容。但是当我 运行 带有 heroku open 的服务器时,没有任何帖子,好像数据库丢失了之类的。

这是为什么?为什么这两个命令启动相同的网页但使用不同的 posts/different 数据库?

这让我想到了我的后续问题:我如何知道何时需要为服务器再次 运行 迁移或 makemigrations?这样做能解决问题吗?这些命令到底有什么用 do/why 它们是必需的吗?

谢谢

编辑:

附加问题:为什么我的帖子按时间降序显示?新帖子位于页面底部而不是顶部。我该如何更改?

您的本地开发项目与您部署的项目存在差异。 我假设您是在本地创建帖子的。所以它们被保存在本地到你的数据库中。在本地,您使用在设置 'django.db.backends.sqlite3' 中定义的基于文件的数据库,这意味着当您 运行 manage.py syncdb 时,将创建包含所有表的文件。当您将代码部署到 heroku 时,代码将被推送到服务器并从这个地方 运行s。这可能无处不在,因此它无法连接到您的本地数据库文件。对于您的项目,您还必须在 heroku 上设置一个数据库。我建议阅读 this article. When you want to transfer your data you can create a database dump local and load all data to you heroku database. Described here and here.

还有一点,你不会运行服务器heroku open或火python manage.py runservergit push heroku master 完成后,heroku 服务器会自动启动。它使用来自 Procfile.

的配置

当您想迁移 heroku 数据库时,您必须 运行 heroku run python manage.py migrate <app_name> 而不是在 heroku 服务器上远程完成迁移。每次更改模型并使用 python manage.py makemigration <app_name> 添加迁移文件时,都必须 运行 此命令。当您这样做时,您必须在本地和远程迁移数据库。这意味着您更改数据库结构以匹配您的模型。请记住,模型只是您数据库的抽象(orm)。

我不知道你的项目,但订单看起来是合法的。试着把它想象成行。第一行排在第一位。所以最后输入的行在底部。您可以使用 .order_by('-id') 之类的内容更改查询集的顺序。因此,您会以相反的顺序获得所有条目。