我遇到了类似的问题,很难弄清楚 DEBUG 何时设置为 False。当我将它重新配置回DEBUG = True 时,一切都恢复正常了。所以问题是
您通常不会在开发中看到此错误,因为当 DEBUG = True 时,ManifestStaticFilesStorage 切换到非散列 URL。
https://stackoverflow.com/a/51060143/7986808
您的问题的解决方案可能与我的不同。但是你可以通过改变你的Django项目的日志记录方法来发现问题,这样即使在DEBUG = False模式下运行heroku logs -t -a <heroku-app>时,你也可以在命令行中看到更多信息。
在settings.py 中更改您的 django 日志记录设置,如下所示:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': ('%(asctime)s [%(process)d] [%(levelname)s] '
'pathname=%(pathname)s lineno=%(lineno)s '
'funcname=%(funcName)s %(message)s'),
'datefmt': '%Y-%m-%d %H:%M:%S'
},
'simple': {
'format': '%(levelname)s %(message)s'
}
},
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
}
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': True,
},
'django.request': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
}
}
然后运行heroku logs -t -a <heroku-app> 并打开您之前收到500 错误的网址,您将在日志中发现问题。希望这会对你有所帮助。
如果缺少一些静态文件,只需在settings.py 中切换您的静态根目录,如下STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')。运行 heroku run python manage.py collectstatic -a <heroku-app> 会创建 staticfiles 目录。