views:

186

answers:

2

Hi,

I'm using a 500.html template for my app, which is an identical copy of the 404.html with some minor text changes.

Interestingly the {{ media_url }} context variable will not be resolved by the server if the 500.html is presented (e.g. when I force an internal server error), resulting in a page without any css loaded.

An easy way to circumvent this would be to hardcode the links to the css, but I m just curious why the media_url is not resolved. Probably it is because the server encounters a internal server error and that leads to context variables not any more available!?

+3  A: 

The 500 error handler doesn't pass a RequestContext to the template, it just uses a Context. As you may know, MEDIA_URL is added in a context processor, which are only included when you use a RequestContext.

You can set your own 500 handler and pass a RequestContext if you want.

Here's a link to the django docs on making a custom handler500.

Seth
I will stick with the default 500 handler and hard-code the css links. That's fine for me ;-) Just good to know why Django behaves this way. Thanks!
Tom Tom
A: 

The django docs recommend that you do not use a template for your 500.html file because there is no way of dealing with an error in the rendering of that template.

Just stick with a straight HTML file informing the user that there has been an error. That's all they need to know.

You can look at the server logs for what you need to know.

blokeley