Murph
Murph

Reputation: 520

Heroku Django DEBUG Setting not applied

I currently have a running production Django application on Heroku. Unfortunately, I haven't been able to turn off the DEBUG setting on Heroku. Turning it off locally works fine, but when pushed to Heroku (after heroku config:set DEBUG=False), it doesn't apply.

The error pages are still the default DEBUG ones instead of the 404, 403, and 500 templates in our template root.

I have also tried using a DJANGO_DEBUG setting in case there were any environment conflicts with DEBUG, and casting the result to a boolean in the settings file. heroku config shows the settings in the environment are correct. This is on Django 1.3, Heroku Cedar.

Any tips or solutions?

Upvotes: 15

Views: 6812

Answers (2)

kvothe__
kvothe__

Reputation: 661

The problem is that the environment variable is not a boolean, rather a string. So do place below line in settings.py

DEBUG = (os.environ.get('DEBUG_VALUE') == 'True')

Upvotes: 4

Does your django settings.py file even look in the environment?

It does not, by default, care about anything you've set in the environment (via "config:set"). If you're "casting" the environment to a boolean, make sure you're casting it correctly. bool('False') is still True.

It's simplest just to detect if the environment variable exists so you don't have to worry about type casting or specific formats of the configuration.

DEBUG = os.environ.get('DEBUG', False)

To disable debug, remove the variable from the environment instead of trying to type cast... it just seems much more reliable and fool proof. config:unset DEBUG

Upvotes: 21

Related Questions