【发布时间】:2016-10-05 02:31:36
【问题描述】:
在关闭调试时在 heroku 上运行我的 django 应用程序时遇到 500 错误。 在使用 rollbar 了解错误发生的原因后,它报告了以下内容:
ValueError: The file 'media/img 1.jpg' could not be found with <whitenoise.storage.CompressedManifestStaticFilesStorage object at 0x7f795706f550>.
我发现它与 STATICFILES_STORAGE 设置有关,通过删除它并使用默认的 django STATICFILES_STORAGE ='django.contrib.staticfiles.storage.StaticFilesStorage'
设置,它的工作原理。但是这三个中的任何一个都不起作用,并且都会导致相同的错误:
STATICFILES_STORAGE ='django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
在whitenoise troubleshooting 中说尝试使用 django 的 manifestStaticFiles Storage,如果问题仍然存在,则问题出在 django 而不是白噪声。
这些是我的生产设置:
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', 'davidsidf@gmail.com'),
)
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'davidsidf@gmail.com'
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'
【问题讨论】:
-
大卫,我们也遇到了同样的问题,目前正在努力寻找解决办法。如果你找到了,请在这里发帖!
-
您是否按照on this page的所有说明进行操作?
标签: python django heroku django-staticfiles django-storage