Erro detalhado
Em produção, a página de erro do modo de depuração entrega caminho, versão e até segredos.
Quando o código quebra, o framework pode responder de dois jeitos. Em desenvolvimento, com o modo de depuração ligado (DEBUG=True), ele mostra uma página rica: a pilha de chamadas (o traceback), o caminho dos arquivos no disco, a versão do framework e, muitas vezes, um despejo das variáveis locais da função que falhou. Isso é ótimo para o programador corrigir o bug.
Em produção, essa mesma página vira um presente para o atacante. O caminho (/srv/pampa/app/...) revela a estrutura do servidor; a versão aponta vulnerabilidades conhecidas daquela versão; e o despejo de variáveis pode conter uma senha de banco ou uma chave secreta que, naquele instante, estava em memória.
A defesa é desligar o modo de depuração em produção (DEBUG=False), mostrar ao usuário uma página de erro genérica (um 500 limpo, sem detalhes) e mandar o traceback só para o log interno. Esconder o software e a versão no cabeçalho Server (no nginx, server_tokens off) fecha o reconhecimento pelo mesmo motivo.