I have a Django-based project on GitHub that I'd like everyone to be able to deploy using the one-click deploy button. It does not use the django.contrib.staticfiles app.
I have the following app.json file at the root of the project:
{
  "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"
    }
  }
}
The problem is, even though I don't have 'django.contrib.staticfiles' in the list of INSTALLED_APPS, Heroku automatically runs python manage.py collectstatic --noinput when someone tries to deploy my app, causing the build to fail.
How do I instruct Heroku NOT to run  collectstatic on deploy?
Go to Heroku Dashboard -> Settings
Choose Config Variables. There, enter
Key-> DISABLE_COLLECTSTATIC Value-> 1
For reference, you can see the picture below.

Just add "DISABLE_COLLECTSTATIC": { "value": "1" } to your env object in your app.json, like so:
"env": {
  "DISABLE_COLLECTSTATIC": {
    "description": "Don't run python manage.py collectstatic --noinput on deploy",
    "value": "1"
  }
}
You can also do this from the terminal if you have an existing Heroku app with the following command:
heroku config:set DISABLE_COLLECTSTATIC=1
More about Django's static assets on Heroku
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With