2011-03-02 19 views
7

Tengo una aplicación básica con el panel de administración y la página de inicio de direct_to_template. Cuando escribo url que no concuerda con ninguna de las URL, recibo el error 404, pero cuando configuro DEBUG en falso, recibo 500.html en lugar de 404.html. ¿Alguna idea de por qué?500.html en lugar de 404.html

Respuesta

8

Django sirve 500 cuando una función de vista falla, lo que significa que debe haber algún código específico que no sea de depuración.

La única forma de saberlo es ver qué excepción está registrando django a través de los registros de su servidor o el correo electrónico que django envía a la lista ADMINS.

+0

Tenías razón, tuve un error en 404.html. Cuando la depuración fue verdadera, no apareció. Muchas gracias :) – szaman

+1

Para mí, fue un problema con la configuración ALLOWED_HOSTS. Ejecutar el sitio en localhost: 8000 con DEBUG = False requiere que agregue '*' a la lista ALLOWED_HOSTS, o obtendrá un error de 500. Asegúrese de recordar volver a sacarlo antes de implementarlo en un servidor de producción. –

+0

@Sybren Añadiendo '*' mi problema ha quedado obsoleto. ¡Gracias! – laike9m

4

También verificaría la ruta de TEMPLATE_DIRS en settings.py, ya que este era el problema en mi caso. Django provoca el error 404, pero como no pudo encontrar 404.html (en la ruta especificada en TEMPLATE_DIRS), generó 500 errores: no se encontró la plantilla (que se muestra en el navegador cuando la depuración es True o el registro del servidor, cuando debug = false).

1

Tal vez hay algo malo en su ejemplo 404.html.For, yo uso se extiende etiqueta como

{% extends base.html%} 

en mi 404.html, a continuación, se muestra siempre 'sever error 500' en lugar de 'página no encontrado 404 '. pero cuando a corregir mi error como sigue

{% extends "base.html" %} 

todo va bien.

2

He encontrado los mismos problemas. Y hago el sistema envía el error a mi gmail:

SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): 127.0.0.1:8000 

Por lo tanto, añadir este código en settings.py:

ALLOWED_HOSTS = ['127.0.0.1', 'localhost'] 

Y ahora, está bien. Creo que cuando hagas que DEPURACIÓN y TEMPLATE_DEBUG sean falsos, debes establecer ALLOWED_HOSTS.

Buena suerte.

Cuestiones relacionadas