我有一个部署到Heroku的Django 1.9.6站点。当DEBUG=False
我收到服务器错误(500)时。日志中没有包含有用的信息,因此我尝试使用DEBUG=True
运行它。现在它工作正常。我认为这个问题可能与我的scss文件处理有关,这让我很困惑,我正在努力解决。我最近 - 除其他事项外 - 将COMPRESS_OFFLINE = True
添加到我的设置文件中,并对其进行评论似乎可以缓解问题(尽管我的scss文件不起作用)。
我的一些静态settings.py
。如果你需要更多,请告诉我 - 这对我来说是个谜。我试图尽可能地遵循this。
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "media/")
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# other finders..
'compressor.finders.CompressorFinder',
)
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "media/")
urls.py
中的:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += [
url(r'^media/(?P<path>.*)$', serve, {
'document_root': settings.MEDIA_ROOT
}),
]
urlpatterns += staticfiles_urlpatterns()
编辑:
我已经登录工作了,我已经确认这是一个压缩错误。我收到错误消息:
Internal Server Error: /
OfflineGenerationError at /
You have offline compression enabled but key "171c3b7763dbc51a465d996f7d920cf5" is missing from offline manifest. You may need to run "python manage.py compress".
这是我在本地获得的同样的事情,除了运行建议的命令解决了它。运行heroku run python manage.py compress
没有效果(运行它没有错误)
答案 0 :(得分:2)
首先关闭ALLOW_HOSTS
的设置值,当调试关闭时,这不能为空。
ALLOWED_HOSTS = ['.mydomain.com', '.2nddomain.com']
因为你使用压缩插件: SET
COMPRESS_ENABLED = True
COMPRESS_OFFLINE = True
# this where the collectstatic and compress result output
# point your static alias to here
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# in your production env: activate ur virtual environment then run the compress statics command
python manage.py compress
python manage.py collectstatic
当Debug关闭时,出于安全原因禁止所有异常,在设置文件中设置admin email以让django通过电子邮件发送所有未捕获的异常
SERVER_EMAIL = 'ur@from-email-address.com'
ADMINS = (
('Exceptions Email', 'destination@email.com'),
)
答案 1 :(得分:2)
compress生成的清单存储在我的.gitignore中,因此生产中的清单是陈旧的。将它添加到git存储库修复了所有内容。
答案 2 :(得分:1)
今天我尝试与'PythonAnywhere'共享一个网站。我遇到了同样的问题并修复了'Allowed_Host'的问题。
https://docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts
settings.py
ALLOWED_HOSTS = ['*']
答案 3 :(得分:1)
将此添加到settings.py
部分内的loggers
,它应该会为您提供更多信息(这有助于我解决同样的问题)。
"django.request": {
"handlers": ["console"],
"level": "ERROR",
"propagate": True
}
对于它的价值,这是我类似的settings.py
设置:
MEDIA_URL = "http://%s.s3.amazonaws.com/" % (AWS_STORAGE_BUCKET_NAME)
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATIC_URL = os.getenv("DJANGO_STATIC_HOST", "") + "/static/"
if DEBUG:
STATIC_URL = "/static/"
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
注意:我没有MEDIA_ROOT
或STATICFILES_FINDERS
,我也使用Whitenoise
和CloudFront
进行静态文件处理