部署到heroku更改DEBUG = False会导致500错误

时间:2015-12-07 21:55:09

标签: python django heroku

我正在使用 Django 1.9 Python 3.4.3 。 在我的应用上更改DEBUG = False时,我的应用的所有页面都出现500错误。

  

注意:Django管理页面也会导致500错误。一些   其他帖子报告在管理页面上没有收到此错误,我是。我也尝试了post

中的所有内容
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

STATIC_URL = '/static/'

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

STATICFILES_DIRS =(
    os.path.join(BASE_DIR, 'static'),
)

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

3 个答案:

答案 0 :(得分:3)

如果将ADMINS添加到设置中会更好:

ADMINS = (('Your name', 'Your@EMAIL'),)

通过这种方式,您可以在发生错误时收到更好的报告,以便调试错误。

希望有所帮助

答案 1 :(得分:2)

Whitenoise正在寻找找不到的东西。我也有这个问题,从来没有让它工作。根据您拥有的静态文件数量,确定是否确实需要缓存它们。

如果你不这样做,就把它放在外面 如果你这样做,你需要找到whitenoise试图找到的东西并给它。也许这会有所帮助:https://stackoverflow.com/a/28385055/1322179

答案 2 :(得分:2)

您可能忘记在settings.py MIDDLEWARE设置中包含whitenoice中间件。编辑您的settings.py文件并将WhiteNoise添加到MIDDLEWARE_CLASSES列表,除了Django的SecurityMiddleware之外的所有其他中间件:

MIDDLEWARE_CLASSES = [
# 'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
#...
]

当DEBUG = True时,这不是必需的,但是当DEBUG = False时,突然出现问题。不幸的是,Heroku在他们的文档中没有包含这个中间件,他们的演示应用程序在DEBUG = True中运行,因此很难找到问题。

可以在whitenoise文档中找到更多信息:http://whitenoise.evans.io/en/stable/django.html

逐步进行设置,了解您所缺少的内容。 Heroku文档倾向于省略中间件添加 - 这会导致错误 - 并且可能还有一些其他内容缺少您的应用程序。