2010-04-05 21 views
16

estoy usando una plantilla 500.html para mi aplicación, que es una copia idéntica de la 404.html con algunos cambios de texto menores.Django no se resuelve en la plantilla de error 500 de servidor interno

Curiosamente, la variable de contexto {{media_url}} no será resuelta por el servidor si se presenta 500.html (por ejemplo, cuando fuerzo un error interno del servidor), lo que da como resultado una página sin ningún css cargado.

Una manera fácil de eludir esta sería la de codificar los vínculos con la CSS, pero yo sólo soy curioso por qué el MEDIA_URL no se resuelve. Probablemente es porque el servidor encuentra un error interno del servidor y eso lleva a que las variables de contexto ya no estén disponibles.

+0

Esto me pasa con el '{{STATIC_URL}}' también. – jjmontes

Respuesta

11

El controlador de errores 500 no pasa un RequestContext a la plantilla, solo usa un Context. Como ya sabrá, se agrega MEDIA_URL en un procesador de contexto, que solo se incluye cuando usa RequestContext.

Usted puede configurar su propio controlador 500 y pasar una RequestContext si lo desea.

Aquí hay un enlace a la django docs en hacer una handler500 personalizado.

+1

Me quedaré con el controlador 500 predeterminado y codificaré los enlaces css. Eso está bien para mí ;-) Solo es bueno saber por qué Django se comporta de esta manera. ¡Gracias! –

3

Los documentos django recomiendan que no utiliza una plantilla para su archivo 500.html porque no hay manera de tratar con un error en la prestación de esa plantilla.

sólo se adhieren con un archivo HTML puro para informar al usuario de que ha habido un error. Eso es todo lo que necesitan saber.

Puede consultar los registros del servidor para conocer lo que necesita saber.

Cuestiones relacionadas