Pourquoi Django génère-t-il des erreurs HTTP 500 pour les supports statiques lorsque Debug est défini sur False?

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

  •  02-07-2019
  •  | 
  •  

Question

Je me prépare à déployer mon application Django et j'ai remarqué que lorsque je change de "DEBUG" définissant la valeur sur False, toutes les références aux fichiers statiques (JavaScript, CSS, etc.) génèrent des erreurs HTTP 500 .

Avez-vous une idée de ce qui cause ce problème (et comment le résoudre)?

Était-ce utile?

La solution

Je recommande fortement de laisser votre serveur Web gérer les demandes statiques, sans accéder à Django. Dans mon urls.py , j'ajoute le gestionnaire de demandes statique uniquement lorsque debug est défini sur True.

Techniquement, Django servant la statique fonctionne bien. Lisez certainement la courte page de documentation, http://docs.djangoproject.com/en / dev / howto / static-files / . Vous voudrez utiliser une entrée comme celle-ci dans urls.py

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

Autres conseils

On dirait que vous essayez peut-être de servir votre média statique en utilisant le serveur de développement Django. Jetez un coup d’œil à http://docs.djangoproject.com/en/dev/howto/ déploiement / pour certains scénarios de déploiement / howtos et http: // docs .djangoproject.com / fr / dev / howto / static-files / pour savoir comment servir les fichiers statiques (mais notez le déni de responsabilité concernant le fait de NE PAS utiliser ces méthodes en production).

En général, je regarderais les journaux de votre serveur pour voir où il essaye d'extraire les fichiers. Je soupçonne que les erreurs 500 sont vraiment des erreurs 404, mais elles le deviennent parce que Django ne peut ni trouver ni afficher le modèle 404.html. Si ce n'est pas le cas, il serait utile de pouvoir signaler l'erreur spécifique 500 que vous obtenez.

Vous devez également vérifier vos URL partout. Lorsque le paramètre DEBUG est défini sur False, toutes les URL ne sont pas suivies du caractère " / " sont traités comme un bogue, contrairement à quand vous avez DEBUG = True, auquel cas Django ajoutera " / " partout il manque. En bref, assurez-vous que tous les liens se terminent par une barre oblique PARTOUT.

Il s’avère que j’ai commenté la variable SECRET_KEY . Il n'y avait aucun moyen pour moi de savoir cependant. Je devais juste essayer des choses.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top