mostrar - Los archivos estáticos no se cargarán cuando no haya depuración en Django
mostrar imagenes django (2)
Estoy creando un proyecto de Django. Simplemente intenté eliminar el proyecto de la depuración, DEBUG = False
y, por alguna razón, todos mis archivos estáticos no aparecen. Dan un código de error de 500. ¿Cómo soluciono esto?
algunos de settings.py:
DEBUG = True
TEMPLATE_DEBUG = DEBUG
...
TEMPLATE_LOADERS = (
''django.template.loaders.filesystem.Loader'',
''django.template.loaders.app_directories.Loader'',
# ''django.template.loaders.eggs.Loader'',
)
MIDDLEWARE_CLASSES = (
''django.middleware.common.CommonMiddleware'',
''django.contrib.sessions.middleware.SessionMiddleware'',
# ''django.middleware.csrf.CsrfViewMiddleware'',
''django.contrib.auth.middleware.AuthenticationMiddleware'',
''django.contrib.messages.middleware.MessageMiddleware'',
)
En Django 1.3, si solo está probando usando manage.py runserver, puede agregar la opción "--insecure", como se describe en los documentos staticfiles :
Parece que todavía envía correos electrónicos al administrador diciendo que no hay plantilla, pero sirve archivos estáticos.
No estoy seguro si el problema del correo electrónico es a propósito o un error
La aplicación de archivos estáticos no está publicando medios estáticos automáticamente en DEBUG=False
modo DEBUG=False
. De django.contrib.staticfiles.urls
:
# Only append if urlpatterns are empty
if settings.DEBUG and not urlpatterns:
urlpatterns += staticfiles_urlpatterns()
Puede servirlo añadiéndolo a sus urlpatterns
manualmente o use un servidor para servir archivos estáticos (como se supone que lo hace al ejecutar proyectos Django en modo no DEPURAR).
Aunque una cosa que me pregunto es por qué obtienes una respuesta de 500 códigos de estado en lugar de 404. ¿Cuál es la excepción en este caso?
EDITAR
Por lo tanto, si aún desea enviar archivos estáticos a través de la aplicación staticfiles, agregue lo siguiente a su url raíz conf ( urls.py
):
if settings.DEBUG is False: #if DEBUG is True it will be served automatically
urlpatterns += patterns('''',
url(r''^static/(?P<path>.*)$'', ''django.views.static.serve'', {''document_root'': settings.STATIC_ROOT}),
)
Algunas cosas que debes tener en mente son:
- no use esto en un entorno de producción (es más lento ya que el procesamiento de archivos estáticos pasa por Django en lugar de ser servido directamente por su servidor web)
- lo más probable es que tenga que usar comandos de administración para recopilar archivos estáticos en su
STATIC_ROOT
(manage.py collectstatic
). Consulte los documentos de la aplicación staticfiles para obtener más información. Esto es simplemente necesario ya que se ejecuta en modo no depuración. - no olvide las
from django.conf import settings
enurls.py
:)