Handling problems in production
In an ideal world, all code problems would be found during development, and nothing would ever go wrong when the code was in production. However, despite best efforts, this ideal is rarely achieved in reality. We must prepare for the case where something will go seriously wrong while the code is running in production mode, and arrange to do something sensible when it happens.
What's involved in doing something sensible? First some response must still be returned to the client that sent the request that resulted in the error. But the response should just be a general error indication, bare of the specific internal details found in the fancy debug error pages produced when DEBUG
is active. At best, a Django debug error page might confuse a general web user, but at worst information gleaned from it might be used by some malicious user to attempt to break the site. Thus, the public response produced for a request that causes an error should be a generic error page...