2010-04-05 13 views
16

Sto utilizzando un modello 500.html per la mia app, che è una copia identica del file 404.html con alcune modifiche di testo minori.L'URL del django media non è stato risolto nel modello di errore del server interno 500

È interessante notare che la variabile di contesto {{media_url}} non verrà risolta dal server se viene presentato il file 500.html (ad es. Quando forzo un errore interno del server), risultando in una pagina senza alcun css caricato.

Un modo semplice per aggirare questo problema è quello di codificare i collegamenti al css, ma sono solo curioso di sapere perché media_url non è stato risolto. Probabilmente è perché il server incontra un errore interno del server e questo porta a variabili di contesto non più disponibili !?

+0

Questo mi succede anche con '{{STATIC_URL}}'. – jjmontes

risposta

11

Il gestore di errori 500 non passa uno RequestContext al modello, utilizza solo un Context. Come forse sapete, MEDIA_URL viene aggiunto in un processore di contesto, che vengono inclusi solo quando si utilizza uno RequestContext.

È possibile impostare il proprio gestore 500 e inoltrare un RequestContext se lo si desidera.

Ecco un collegamento allo django docs per la creazione di un gestore personalizzato500.

+1

Continuerò con il gestore 500 predefinito e hard-code i collegamenti css. Per me va bene ;-) È bello sapere perché Django si comporta in questo modo. Grazie! –

3

I documenti di django consigliano di non utilizzare un modello per il file 500.html perché non c'è modo di gestire un errore nel rendering di quel modello.

Basta attaccare con un file HTML diritto per informare l'utente che si è verificato un errore. Questo è tutto ciò che hanno bisogno di sapere.

È possibile consultare i registri del server per ciò che è necessario sapere.

Problemi correlati