error disable_collectstatic deploy application django heroku django-staticfiles staticfilehandler

disable_collectstatic - Django archivos estáticos en heroku



heroku config:set disable_collectstatic=1 (4)

Desplegué una aplicación django para heroku, usando "git push heroku master" que funcionó absolutamente bien.

Luego creé una segunda aplicación en el mismo git usando "heroku create second-app -r staging ''

y pulsado usando: git push staging master

cuando abro la segunda aplicación, ninguno de los archivos estáticos se selecciona o carga (es decir, no funciona css, js o imágenes)

Esto es extremadamente confuso - por favor ayuda!

mi archivo de configuración está abajo

import os import platform import dj_database_url DEBUG = True TEMPLATE_DEBUG = DEBUG # This should work for any deployment BASE_DIR = os.path.abspath(os.path.join(os.path.dirname( __file__ ), ''..'')) ADMINS = ( (''me'', ''me@gmailcom''), ) MANAGERS = ADMINS # LOCAL SETTINGS if platform.system() in [''Windows'', ''Darwin'']: #EV = ''LOCAL'' DATABASES = { ''default'': { ''ENGINE'': ''django.db.backends.sqlite3'', # Add ''postgresql_psycopg2'', ''mysql'', ''sqlite3'' or ''oracle''. ''NAME'': BASE_DIR + ''//db//db.sqlite3'', ''USER'': '''', # Not used with sqlite3. ''PASSWORD'': '''', # Not used with sqlite3. ''HOST'': '''', # Set to empty string for localhost. Not used with sqlite3. ''PORT'': '''', # Set to empty string for default. Not used with sqlite3. } } # Hosts/domain names that are valid for this site; required if DEBUG is False # See https://docs.djangoproject.com/en/1.4/ref/settings/#allowed-hosts ALLOWED_HOSTS = [] CACHES = { ''default'': { ''BACKEND'': ''django.core.cache.backends.locmem.LocMemCache'', ''LOCATION'': ''unique-snowflake'', ''TIMEOUT'': 86400, ''OPTIONS'': { ''MAX_ENTRIES'': 10000 }, } } # HEROKU SETTINGS else: #EV = ''HEROKU'' # DEBUG = False DATABASES = {} DATABASES[''default''] = dj_database_url.config() # Honor the ''X-Forwarded-Proto'' header for request.is_secure() SECURE_PROXY_SSL_HEADER = (''HTTP_X_FORWARDED_PROTO'', ''https'') # Hosts/domain names that are valid for this site; required if DEBUG is False # See https://docs.djangoproject.com/en/1.4/ref/settings/#allowed-hosts # Allow all host headers ALLOWED_HOSTS = [''*''] # Todo: ammar - update to Memcached CACHES = { ''default'': { ''BACKEND'': ''django.core.cache.backends.locmem.LocMemCache'', ''LOCATION'': ''unique-snowflake'', ''TIMEOUT'': 86400, ''OPTIONS'': {''MAX_ENTRIES'': 10000}, } } TIME_ZONE = ''Europe/London'' LANGUAGE_CODE = ''en-gb'' SITE_ID = 1 USE_I18N = True USE_L10N = True USE_TZ = False MEDIA_ROOT = '''' MEDIA_URL = ''/media/'' STATIC_ROOT = '''' STATIC_URL = ''/static/'' STATICFILES_DIRS = () STATICFILES_FINDERS = ( ''django.contrib.staticfiles.finders.FileSystemFinder'', ''django.contrib.staticfiles.finders.AppDirectoriesFinder'', ) SECRET_KEY = ''***'' 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'', # Uncomment the next line for simple clickjacking protection: # ''django.middleware.clickjacking.XFrameOptionsMiddleware'', ) ROOT_URLCONF = ''sm.urls'' # Python dotted path to the WSGI application used by Django''s runserver. WSGI_APPLICATION = ''sm.wsgi.application'' TEMPLATE_DIRS = ( os.path.join(BASE_DIR, ''mytemplates'') ) INSTALLED_APPS = ( ''django.contrib.auth'', ''django.contrib.contenttypes'', ''django.contrib.sessions'', ''django.contrib.sites'', ''django.contrib.messages'', ''django.contrib.staticfiles'', # Uncomment the next line to enable the admin: ''django.contrib.admin'', # Uncomment the next line to enable admin documentation: ''django.contrib.admindocs'', ''smcore'', ''south'', ''django.contrib.humanize'', ) LOGGING = { ''version'': 1, ''disable_existing_loggers'': False, ''filters'': { ''require_debug_false'': { ''()'': ''django.utils.log.RequireDebugFalse'' } }, ''handlers'': { ''mail_admins'': { ''level'': ''ERROR'', ''filters'': [''require_debug_false''], ''class'': ''django.utils.log.AdminEmailHandler'' } }, ''loggers'': { ''django.request'': { ''handlers'': [''mail_admins''], ''level'': ''ERROR'', ''propagate'': True, }, } } LOGIN_URL = ''/login/'' LOGIN_REDIRECT_URL = ''/getStarted/'' LOGOUT_URL = ''/do_logout/'' # e-mail server EMAIL_HOST_USER = ''***@gmail.com'' EMAIL_HOST= ''smtp.gmail.com'' # EMAIL_PORT = 465 EMAIL_USE_TLS = True EMAIL_HOST_PASSWORD = ''***'' DEFAULT_FROM_EMAIL = ''***@gmail.com'' SERVER_EMAIL = ''***@gmail.com''

Actualizar

Tomé una copia del código y la reubicé, que funcionó con las siguientes actualizaciones de la configuración:

STATIC_ROOT = ''staticfiles'' STATIC_URL = ''/static/'' STATICFILES_DIRS = ( (os.path.join(BASE_DIR,''smcore'',''static'')), ) STATICFILES_FINDERS = ( #''django.contrib.staticfiles.finders.FileSystemFinder'', #''django.contrib.staticfiles.finders.AppDirectoriesFinder'', #''django.contrib.staticfiles.finders.DefaultStorageFinder'', )

Luego ramifiqué mi código (así que tengo maestría y puesta en escena) y sincronicé el nuevo control remoto de heroku en mi sucursal de estadificación. Luego hice una puesta en escena de git push: master e hizo una subida completa; lo que una vez más me hizo volver al mismo lugar ... ¡ayuda!


Desde Django 1.3 has podido hacer lo siguiente

# only showing relevant imports from django.conf import settings from django.conf.urls.static import static urlpatterns = patterns( '''', # your urls go here ) if settings.DEBUG: urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)



Parece que es porque estás usando la aplicación staticfiles sin haber establecido la configuración STATIC_ROOT.

En comparación, mi settings.py es algo como:

# Static asset configuration BASE_DIR = os.path.dirname(os.path.abspath(__file__)) STATIC_ROOT = ''staticfiles'' STATIC_URL = ''/static/'' STATICFILES_DIRS = ( os.path.join(BASE_DIR, ''../myapp/static'')

También debe establecer STATICFILES_DIRS (tenga en cuenta que mi conf para esta var es probablemente no igual a la suya)

Luego, presione su código y vuelva a intentarlo. Si aún no funciona, puede usar esto para depurar: https://devcenter.heroku.com/articles/django-assets#debugging


También he estado lidiando con el mismo problema. Intenté no usar la solución recomendada por David, ya que parece que solo se usa en desarrollo (y no en producción) (ver: archivos estáticos de Heroku que no se cargan, Django )

Y aquí están las 2 cosas que cambié en mi código.

(Estoy usando Django 1.7)

1) settings.py

Añado estas líneas a los archivos de configuración.

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) STATIC_ROOT = os.path.join(BASE_DIR, ''staticfiles'') STATICFILES_STORAGE = ''whitenoise.django.GzipManifestStaticFilesStorage'' TEMPLATE_DIRS = ( os.path.join(BASE_DIR, ''templates''), # Add to this list all the locations containing your static files )

STATIC_ROOT: esto le dice a Django dónde (a) colocar los archivos estáticos cuando ejecutas "python manage.py collectstatic" y (b) encontrar los archivos estáticos cuando ejecutas la aplicación

TEMPLATE_DIRS: esto le dice a Django dónde buscar tus archivos estáticos cuando busca archivos estáticos cuando ejecutas "python manage.py collectstatic"

2) wsgi.py

Originalmente mi archivo era:

import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xxxx.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application()

Y lo cambié a:

import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xxxx.settings") from django.core.wsgi import get_wsgi_application from whitenoise.django import DjangoWhiteNoise application = get_wsgi_application() application = DjangoWhiteNoise(application)

Lea aquí para obtener más información sobre whitenoise: https://devcenter.heroku.com/articles/django-assets#whitenoise

Además, recuerde instalar whitenoise: pip install whitenoise == 2.0.6

Antes de implementar el proyecto, ejecute: python manage.py collectstatic

Esto creará una carpeta indicada por STATIC_ROOT (declarada en su configuración.py), que contiene todos sus archivos estáticos.