Alejandro Veintimilla
Alejandro Veintimilla

Reputation: 11523

Django. How to debug a deployed website without turning on Debug setting

I have a little forum that is already deployed and working. I just found out something is wrong with the Twitter login and I need to debug it. Right now it returns a 500 page. I can't know what is wrong with Debug = True. But if I turn it on, then I'll be violating Django security best practices, and if someone saves the info in the debug page (with Debug=False) and has bad intentions, he could cause lots of trouble. What would you recommend?

Upvotes: 3

Views: 3698

Answers (1)

Josh K
Josh K

Reputation: 28883

  1. Make sure you have access to the application logs and have properly configured the AdminEmailHandler.
  2. Make sure you've property configured ALLOWED_HOSTS. If you haven't configured it and set DEBUG=False you'll see a SuspiciousOperation raised.
  3. Double check that you have the incidentals covered. Bad database connection details will quickly cause 500 errors.
  4. Have you tried running it locally with DEBUG=False? That's often a quick way to find out about some more esoteric errors.

To follow up based on the comments you'll need to turn DEBUG on in a somewhat live environment. The standard way to do this would be to have a separate staging environment from the live one. Since Heroku is being used you can easily spin up a separate environment and set DEBUG=True there. Then you'll see the full error pages, fix the error, and deploy to production where DEBUG=False.


Another idea is to setup a third-party exception handling system like Raygun or Bugsnag. Adding this to the production application will give you reports when exceptions are thrown. This is a big upgrade over Django's default email-on-error behavior.

Upvotes: 2

Related Questions