Server Error (500) on Django when template debug is set to False?

For django v 1.5+ , in your settings.py file, Make the configuration ALLOWED_HOSTS = ['*'] if you want a quick fix

If you are really going production (and concerned about security), put allowed host names in ALLOWED_HOSTS

this SO link has more info

Setting DEBUG = False causes 500 Error


Use the following LOGGING settings, then you should be able to see the error in the console.

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },

    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        },
        'console':{
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

remember to set DEBUG = False


I got the 500 Internal Server error after switching DEBUG off as well. Another reason this could happen is if you have an extra / at the start of the relative static path. So replace:

<link rel="stylesheet" href="{% static '/css/somecustom.css' %}">

with

<link rel="stylesheet" href="{% static 'css/somecustom.css' %}">

i.e. search and replace {% static '/ with {% static ' in your template files.

To understand this further you can read up on the caching behaviour of Django’s ManifestStaticFilesStorage backend.