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

时间:2016-06-22 14:35:17

标签: python django heroku

我在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"
    }
  }
}

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

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

2 个答案:

答案 0 :(得分:4)

只需将"DISABLE_COLLECTSTATIC": { "value": "1" }添加到env中的app.json对象,就像这样:

"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

答案 1 :(得分:4)

  

转到 Heroku信息中心 - >设置

     

选择配置变量。在那里,输入
  键 - > DISABLE_COLLECTSTATIC 值 - >的 1

作为参考,您可以看到图片Heroku disable collect static