如何指示Heroku不要在部署时自动运行collectstatic?

我在
GitHub上有一个基于Django的项目,我希望每个人都能够使用一键式部署按钮进行部署.它不使用django.contrib.staticfiles应用程序.

我在项目的根目录下有以下app.json文件:

{
  "name": "Django project",
  "description": "A hello world Django-based project",
  "repository": "https://github.com/john-doe/django-project",
  "keywords": ["python", "django"],
  "scripts": {
    "postdeploy": "python manage.py migrate --noinput"
  },
  "addons": [
      "heroku-postgresql"
  ],
  "success_url": "/",
  "env": {
    "SECRET_KEY": {
      "description": "A randomly generated secret to secure your Django installation.",
      "generator": "secret"
    }
  }
}

问题是,即使我在INSTALLED_APPS列表中没有’django.contrib.staticfiles’,当有人试图部署我的应用程序时,Heroku会自动运行python manage.py collectstatic –noinput,导致构建失败.

如何指示Heroku不要在部署时运行collectstatic?

最佳答案 只需将“DISABLE_COLLECTSTATIC”:{“value”:“1”}添加到a​​pp.json中的env对象,如下所示:

"env": {
  "DISABLE_COLLECTSTATIC": {
    "description": "Don't run python manage.py collectstatic --noinput on deploy",
    "value": "1"
  }
}

如果您的现有Heroku应用程序具有以下命令,您也可以从终端执行此操作:

heroku config:set DISABLE_COLLECTSTATIC=1

More about Django’s static assets on Heroku

点赞