2016-06-05 16 views
2

Ich habe einen 500 Fehler beim Ausführen meiner Django-App auf heroku beim Debug-Off aufgetreten. nach rollbar mit Vorstellung davon zu bekommen, warum der Fehler wurde happaning berichtet folgende:django/whitenoise Speicher-Backend verursacht einen Fehler

ValueError: The file 'media/img 1.jpg' could not be found with <whitenoise.storage.CompressedManifestStaticFilesStorage object at 0x7f795706f550>. 

ich es herausgefunden hat mit der STATICFILES_STORAGE Einstellung zu tun, indem sie es und mit dem Standard django STATICFILES_STORAGE ='django.contrib.staticfiles.storage.StaticFilesStorage' Einstellung zu entfernen, es funktioniert . aber jede dieser drei keines funktioniert und alle bewirkt, dass die gleichen Fehler:

STATICFILES_STORAGE ='django.contrib.staticfiles.storage.ManifestStaticFilesStorage' 
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' 
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' 

in whitenoise troubleshooting sagt, es zu versuchen Djangos manifestStaticFiles Speicher zu verwenden, und wenn das Problem weiterhin besteht, dann ist das Problem in django und nicht Whitenoise.

sind diese Produktionseinstellungen:

from django.conf import settings 

import os 

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'django.middleware.security.SecurityMiddleware', 
    'whitenoise.middleware.WhiteNoiseMiddleware', 
    'rollbar.contrib.django.middleware.RollbarNotifierMiddleware', 
) 


DEBUG = False 

# Email debugging configuration 

ADMINS = (
    ('david', '[email protected]'), 
) 

EMAIL_USE_TLS = True 

EMAIL_HOST = 'smtp.gmail.com' 

EMAIL_HOST_USER = '[email protected]' 

EMAIL_HOST_PASSWORD = '*******' 

EMAIL_PORT = 587 


# Honor the 'X-Forwarded-Proto' header for request.is_secure() 

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') 

ALLOWED_HOSTS = ['evening-garden-60868.herokuapp.com'] 

ROLLBAR = { 
    'access_token': '*******************', 
    'environment': 'development' if DEBUG else 'production', 
    'branch': 'master', 
    'root': '/absolute/path/to/code/root', 
} 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR,"studio", "static"), 
) 

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') 

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' 
+0

David, wir haben auch das gleiche Problem und derzeit versucht, eine Lösung zu finden. Wenn Sie einen finden, bitte hier posten! – chris

+0

Siehe http://stackoverflow.com/questions/35507140/django-staticfiles-not-found-on-heroku-with-whitenoise – Flimm

+0

Haben Sie alle Anweisungen [auf dieser Seite] (https: //devcenter.heroku. com/Artikel/Django-Vermögenswerte)? –

Antwort

1

Ich glaube, Sie dienen Mediendatei static Helferfunktion wie folgt aus:

urlpatterns = [ 
    ... 
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

Die Mediendatei dienen scheitern, weil static Helferfunktion Sie benutzt in project/urls.py funktioniert nur, wenn DEBUG aktiviert ist. Es gibt security concerns, wenn Sie auf diese Weise in der Produktion hochgeladene Benutzerinhalte bereitstellen.

Sie können diese Einschränkung natürlich entfernen, wenn Sie wirklich sicher sind, dass der Inhalt Ihres Benutzers sicher ist.

def static(prefix, view=serve, **kwargs): 
    ... 
    # No-op if not in debug mode or an non-local prefix 
    if not settings.DEBUG or (prefix and '://' in prefix): 
     return [] 
    elif not prefix: 
     raise ImproperlyConfigured("Empty static prefix not permitted") 
    return [ 
     url(r'^%s(?P<path>.*)$' % re.escape(prefix.lstrip('/')), view, kwargs=kwargs), 
    ] 
Verwandte Themen