500.html instead of 404.html
Django serves a 500 when a view function fails, which means there must be some non debug specific code breaking.
The only way to tell is see what exception django is logging either via your server logs or the email that django sends to the ADMINS
list.
I would also check TEMPLATE_DIRS path in settings.py as this was the problem in my case. Django raises 404 error, but as it was not able to find 404.html (in the path specified in TEMPLATE_DIRS) so it raised 500 error - template not found (which is either show in the browser when debug is True or server log, when debug=false).
I have met the same problems. And I make the system send the error to my gmail:
SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): 127.0.0.1:8000
So, I add this code in settings.py:
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
And now, it's ok. I think when you make the DEBUG and TEMPLATE_DEBUG are false, you must set ALLOWED_HOSTS.
Good luck.