whitenoise error deploy application app django heroku django-admin

error - Django en Heroku-Archivos estáticos de administrador rotos



whitenoise django 2 (9)

''django.contrib.staticfiles.views.serve''

en lugar de

''django.views.static.serve''

Tengo una aplicación Django ejecutándose en Heroku / Cedar, configurada según las instrucciones en https://devcenter.heroku.com/articles/django

El uso de Gunicorn según las instrucciones de Heroku no incluye los archivos estáticos necesarios para que funcione el administrador de Django. Puedo cambiar el archivo Procfile a "manage.py run_gunicorn" para el desarrollo local, pero eso no funciona en Heroku.

He buscado por todas partes una solución: ¿hay alguna manera de incluir los archivos estáticos de administración sin lanzarlos en S3 con mis otros archivos estáticos?


Echa un vistazo a esta publicación: http://matthewphiong.com/managing-django-static-files-on-heroku

Si eso no funciona, intente agregar lo siguiente a urls.py después de la tupla de patrón de url normal. Asegúrese de tener su conjunto STATIC_ROOT y de que haya ejecutado la recopilación estática en su entorno local todo antes de presionar Heroku.

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


Parece poco tarde en comparación con la fecha solicitada. Pero me metí en este problema y dediqué 30 minutos a hacer lo que hice mal. Así que aquí está la solución mágica para aquellos que podrían caer en esta trampa.

Hay algún problema con django.contrib.staticfiles.urls de Heroku

SOLUCIÓN

dj-static instalar dj-static ( Enlace para descargar ) en su configuración de Heroku. Es una utilidad de middleware de Django que permite servir adecuadamente los activos estáticos desde la producción con un servidor WSGI como Gunicorn.

Espero que esto ayude a alguien.


Si está implementando en Heroku sin usar whitenoise (lo que sugeriría), ¡definitivamente use dj_static https://pypi.python.org/pypi/dj-static !

Pasé las últimas 3 horas tratando de entregar mis archivos a heroku y dj_static funcionó en solo 2 minutos.


Si usa runserver y configura su aplicación con DEBUG = True, entonces servirá los archivos de administración como en su máquina de desarrollo. Sin embargo, esta definitivamente no es la forma recomendada de hacerlo, y sugeriría que los ponga en S3.

Con la aplicación django-storages es muy fácil configurar collectstatic para enviar automáticamente todos los archivos de administración a S3. Puedes encontrar direcciones here


Sigue esto para solucionar todos los problemas relacionados con la estática con Django y heroku.

En tu settings.py pega esto al final.

import os BASE_DIR = os.path.dirname(os.path.abspath(__file__)) STATICFILES_DIRS = ( os.path.join(BASE_DIR,''static''), ) TEMPLATE_DIRS = ( os.path.join(BASE_DIR,''templates''), ) STATIC_URL = ''/static/''

Su plantilla para una aplicación en particular debe estar en app_name/templates/app_name/

Cuando renderice la plantilla, así es como especificará el template name

en views.py

..... return render(request,''app_name/template_name.html'',context)

Para static files coloque sus archivos aquí:

project_folder/app_name/static/app_name/css

project_folder/app_name/static/app_name/js

project_folder/app_name/static/app_name/img

para acceder a la ruta de uso del archivo estático app_name/css/style_name.css

Si sigue esto, todos sus archivos estáticos se cargarán bien tanto en Heroku como en su máquina de desarrollo local.


Tengo administrador django trabajando con las siguientes ediciones

urls.py (al final)

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

Procfile

web: gunicorn hellodjango.wsgi -b 0.0.0.0:$PORT


cree una carpeta ''estática'' en su ''directorio_proyecto''.

establezca la ruta ''STATIC_ROOT'' en el archivo ''settings.py'' que puede servir los archivos estáticos de su sitio de administración.

STATIC_ROOT = (os.path.join(os.path.dirname(__file__), ''..'', ''static''))

Añadir STATIC_ROOT en ''/urls.py''

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

Ejecute el siguiente comando que copiará todos los archivos estáticos de administración en la carpeta estática del proyecto.

python manage.py collectstatic

Ahora haz git add, commit y push heroku master.


solo agrega estos en su lugar

from django.contrib.staticfiles.urls import staticfiles_urlpatterns urlpatterns += staticfiles_urlpatterns()

utilizando django 1.4.1