Perché Django genera errori HTTP 500 per supporti statici quando Debug è impostato su False?

StackOverflow https://stackoverflow.com/questions/121866

  •  02-07-2019
  •  | 
  •  

Domanda

Mi sto preparando a distribuire la mia app Django e ho notato che quando cambio il " DEBUG " impostato su False, tutti i riferimenti a file statici (ad es. JavaScript, CSS, ecc.) generano errori HTTP 500 .

Hai idea di cosa stia causando quel problema (e come risolverlo)?

È stato utile?

Soluzione

Consiglio vivamente di lasciare che il tuo server web gestisca le richieste statiche, senza arrivare a Django. Nel mio urls.py , aggiungo il gestore di richieste statiche solo quando il debug è impostato su True.

Tecnicamente, comunque Django al servizio dell'elettricità statica funziona benissimo. Leggi sicuramente la breve pagina dei documenti, http://docs.djangoproject.com/en / dev / howto / static-files / . Ti consigliamo di utilizzare una voce come questa in urls.py

(r'^static/(?P<path>.*), 'django.views.static.serve',
    {'document_root': '/path/to/media'})

Altri suggerimenti

Sembra che tu stia provando a servire i tuoi supporti statici usando il server di sviluppo Django. Dai un'occhiata a http://docs.djangoproject.com/en/dev/howto/ deploy / per alcuni scenari di distribuzione / howtos e http: // docs .djangoproject.com / it / dev / howto / static-files / per come servire i file statici (ma nota la dichiarazione di non responsabilità riguardo al NON usare quei metodi in produzione).

In generale, guarderei i log del tuo server e vedrei da dove sta cercando di recuperare i file. Sospetto che i 500 errori siano in realtà errori 404, ma diventano 500 errori perché Django non riesce a trovare o visualizzare il modello 404.html. In caso contrario, sarebbe utile poter pubblicare l'errore 500 specifico che stai riscontrando.

Devi anche controllare i tuoi URL ovunque. Quando DEBUG è impostato su False, tutti gli URL senza trascinamento " / " vengono trattati come bug, diversamente da DEBUG = True, nel qual caso Django aggiungerà " / " ovunque manca. Quindi, in breve, assicurati che tutti i collegamenti finiscano con una barra OVUNQUE.

Si è scoperto che avevo commentato la variabile SECRET_KEY . Tuttavia, non potevo saperlo. Dovevo solo provare le cose.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top