¿Por qué Django genera errores HTTP 500 para medios estáticos cuando Debug está configurado en False?

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

  •  02-07-2019
  •  | 
  •  

Pregunta

Me estoy preparando para implementar mi aplicación Django y noté que cuando cambio la configuración "DEBUG" a Falso, todas las referencias a archivos estáticos (es decir, JavaScript, CSS, etc.) dan como resultado HTTP 500 errores.

¿Alguna idea de qué está causando ese problema (y cómo solucionarlo)?

¿Fue útil?

Solución

Recomiendo ampliamente dejar que su servidor web maneje las solicitudes estáticas, sin tener que acceder a Django.En mi urls.py, solo agrego el controlador de solicitudes estáticas cuando la depuración está configurada en Verdadero.

Técnicamente, Django sirviendo estática funciona bien.Definitivamente lea la página de documentos breves, http://docs.djangoproject.com/en/dev/howto/static-files/.Querrás usar una entrada como esta en urls.py

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

Otros consejos

Parece que podrías estar intentando entregar tus medios estáticos utilizando el servidor de desarrollo Django.Echa un vistazo a http://docs.djangoproject.com/en/dev/howto/deployment/ para algunos escenarios de implementación/cómos y http://docs.djangoproject.com/en/dev/howto/static-files/ para saber cómo entregar archivos estáticos (pero tenga en cuenta el descargo de responsabilidad sobre NO utilizar esos métodos en producción).

En general, miraría los registros de su servidor y vería de dónde intenta recuperar los archivos.Sospecho que los errores 500 son en realidad errores 404, pero se convierten en errores 500 porque Django no puede encontrar ni renderizar la plantilla 404.html.Si ese no es el caso, sería útil si pudieras publicar el error 500 específico que estás recibiendo.

También debes verificar tus URL por todas partes.Cuando DEBUG se establece en False, todas las URL sin "/" al final se tratan como un error, a diferencia de cuando tienes DEBUG = True, en cuyo caso Django agregará "/" en todos los lugares donde falte.En resumen, asegúrese de que todos los enlaces terminen con una barra en TODAS PARTES.

Resulta que había comentado el SECRET_KEY variable.Aunque no había manera de que yo lo supiera.Sólo tenía que probar cosas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top