服务器错误 (500) 在 heroku 上部署 Django

Fan*_*e27 2 python django heroku server-error django-settings

我在我的 settings.py 文件中将 debug 设置为 False(请注意,在我将其设置为 false 之前,一切都完美无缺),当我运行git push heroku master并访问我的网站时,主页正在运行,但并非所有人都如此我的页面:在某些页面上,我收到一条错误消息Server Error (500)

这是我的settings.py代码:

DEBUG = False
ALLOWED_HOSTS = ["hacka-labs.herokuapp.com"]
Run Code Online (Sandbox Code Playgroud)

我注意到的是,我传递 id 的网址不起作用

如果你知道答案,请帮助我

kha*_*hin 8

我遇到了类似的问题,很难弄清楚 DEBUG 何时设置为 False。当我将它重新配置回DEBUG = True一切正常时。所以问题是

您通常不会在开发中看到此错误,因为当DEBUG = True, ManifestStaticFilesStorage 切换到非散列网址时。 /sf/answers/3574210041/

您的问题的解决方案可能与我的不同。但是您可以通过更改 Django 项目的日志记录方法来发现问题,因此heroku logs -t -a <heroku-app>即使在DEBUG = False模式下运行时,您也可以在命令行中看到更多信息。

更改您的 Django 日志设置settings.py如下:

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,
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

然后运行heroku logs -t -a <heroku-app>并打开之前出现 500 错误的 url,您将在日志中找到问题。希望这会帮助你。


如果缺少一些静态文件,只需settings.py按如下方式切换您的静态根STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')。运行heroku run python manage.py collectstatic -a <heroku-app>会创建 staticfiles 目录。