Django 迁移有效但不反映在现场

Django migrate works but doesn't reflect on live site

我对项目做了一些更新:添加 1 个管理模型,添加 1 个模板

我正在使用鹡鸰。我将更新拉到我的服务器,运行 迁移,取得了成功。我重启了 nginx 和 gunicorn,我什至重启了服务器。

当我转到 wagtail 管理员时,我的管理员模型丢失了(它存在于本地)。当我去创建一个新页面时,我的模板可用,但是当我 select 它时,我被带到了 wagtail 404 页面。

Ubuntu 20.04
ngnix
gunicorn
django/wagtail
digital ocean vpc
digital ocean postgres database cluster

网站工作正常,只有一个模板可用,我不能 select,迁移的模型不可用,也没有显示在管理员中。我的本地版本运行良好,没有任何差异。看起来服务器既在更新又不在更新。我不明白。 运行 makemigrations 或 migrate returns 没有变化。即使在特定应用程序上 运行。我需要做些什么来重新启动数据库吗?

听着,这看起来像是 Nginx 的缓存问题。尝试清除缓存。

我有 2 个设置文件:dev.py、production.py

dev.py 连接到 sqlite3 数据库,生产连接到 digitalocean postgres 集群。

python manage.py 自动使用 dev.py(至少在我的设置中)所以我的迁移工作正常,但它们针对的是 sqlite.db I 的旧副本已经在服务器上,或者可能创建了一个,就像在一个不存在时所做的那样。无论哪种方式,实时站点 运行 都在 production.py 设置中,这就是进行更改但未反映的原因。

当您有 production.py 文件时 运行 迁移的正确方法类似于:

python manage.py migrate --settings=<settings app>.<settings folder>.production

我还要补充一点,我发现每次更新 css 样式表时都需要收集静态数据。这有点乏味,也许我错过了一个自动化步骤,但考虑到这种情况,为了安全起见,我 运行 像这样:

python manage.py collectstatic --settings=<settings app>.<settings folder>.production

它不会引起任何问题并且有效,所以我使用 --settings 标志来确保安全。

git pull
python manage.py migrate --settings=app.settings.production
python manage.py collectstatic --settings=app.settings.production
sudo systemctl restart ngix
sudo systemctl restart gunicorn

我不知道重启 ngix 是必要的,但我相信它解决了我更新静态文件的问题。