whitenoise djangowhitenoise django heroku django-admin

djangowhitenoise heroku



Heroku collectstatic no se ejecuta durante el despliegue (4)

La salida del terminal de comando no tiene nada sobre recopilar archivos estáticos.

Mirando heroku-buildpack-python: bin / steps / collectstatic parece que intenta hacer una collectstatic --dry-run --noinput y pipes es salida a /dev/null antes de mostrar -----> Collecting static files mensaje de -----> Collecting static files . Esto significa que si hay un error allí que no está presente en su cuadro local, nunca verá el error en heroku: fracasará silenciosamente . (El mejor tipo de falla;)

¿Has intentado ejecutar a un trabajador único para probar el comando recopilativo y ver si hay un problema en su entorno?

heroku run python manage.py collectstatic --dry-run --noinput

Si esto falla, le dará un error o rastreo para investigar y diagnosticar aún más el problema.

Tengo una aplicación django que estoy depilándome con éxito en heroku. Cuando hago funcionar el comando colecético de forma local, todo funciona bien.

python manage.py collectstatic --dry-run --noinput .... Pretending to copy ''/Users/hari/.virtualenvs/bsc2/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/ordering.js'' Pretending to copy ''/Users/hari/.virtualenvs/bsc2/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js'' 71 static files copied.

A pesar de esto ... mis archivos static de django admin no se utilizan y obtengo un sitio de administración de django escueto en heroku con Debug configurado en False.

Si configuro Debug en True, obtengo un sitio de administración "rico" en heroku. Con Debug configurado en True o False, el resultado del comando "git push heroku master" no tiene nada que ver con la recopilación de archivos estáticos.

Probé la aplicación de ejemplo "helloworld" que usa gunicorn de Heroku y que mostró los mensajes de "recopilación estática". También intenté insertar este fragmento de código en mis urls.py. Pero eso tampoco ayuda.

desde la configuración de importación django.conf

if not settings.DEBUG: urlpatterns += patterns('''', (r''^static/(?P<path>.*)$'', ''django.views.static.serve'', {''document_root'': settings.STATIC_ROOT}),

A continuación, intenté agregar lo siguiente a mi configuración heroku

heroku config:add DISABLE_COLLECTSTATIC=0

Pero eso tampoco mostró mi sitio de administración django con todos los estilos.

Finalmente traté de cambiar a gunicornio con mi Procfile y eso tampoco mostró los estilos de administrador. Solo establecer Debug = True funciona para mostrar mis estilos de administrador.

Intenté esto con Django 1.4.2 y 1.5.1 en Heroku y ninguno me muestra un sitio de administración "normal". ¿Hay alguna forma de tener mis archivos de administración en heroku sin ir por la ruta S3?



Prueba estas tres cosas:

  • Cree esta variable de configuración de Heroku: DJANGO_SETTINGS_MODULE con un valor de myapp.settings.prod --o según corresponda para su archivo de configuración de Heroku
  • Utilice Whitenoise como se describe en los documentos de Heroku: https://devcenter.heroku.com/articles/django-assets
  • Compruébalo y git push heroku master tu dyno: git push heroku master

Encontré que me faltaba el primer elemento, el DJANGO_SETTINGS_MODULE "por ejemplo, la línea de comandos collectstatic funcionaría, pero eso no importaba porque era un dyno efímero


arrojándolo allí, ya que ocurren errores tontos:

Pasé mucho tiempo tratando de descubrir por qué mi módulo no se encontraba en heroku cuando estaba funcionando bien localmente, solo para darme cuenta de que fue ignorado por una entrada en .slugignore