testdriven.io django 在尝试访问 postgres 时在 heroku 上提高 500

testdriven.io django raise 500 on heroku when tried to access postgres

我正在学习 https://testdriven.io/courses/tdd-django/deployment/ 中的教程。 当我在不访问 postgres 的情况下请求 get 时,一切都运行良好, http://ancient-waters-04623.herokuapp.com/ping/ 将 return 状态 200

我完成了迁移和种子数据

$ heroku run python manage.py migrate
$ heroku run python manage.py loaddata movies.json

当我在浏览器中 运行 http://ancient-waters-04623.herokuapp.com/api/movies/ 时,它会给我错误 500

日志:

$ heroku logs --app=ancient-waters-04623 --tail

2020-09-07T10:13:51.045281+00:00 heroku[路由器]: at=info method=GET path="/ping/" host=ancient-waters-04623.herokuapp.com request_id=1895c42e-27d8-4d67-b5e8-98d0e5c3a3bd fwd="210.186.32.252" dyno=web.1 connect=0ms service=4ms status=200 bytes=225 protocol=http

我尝试通过 dbeaver 连接数据库,成功连接并加载了正确的数据。

我是 heroku 或 django 的新手,我们将不胜感激。

提前致谢

我在访问时也得到了 500 的回报

https://APP_NAME.herokuapp.com/api/movies/

我在 Dockerfile.prod 中打开了调试模式,并且能够查看具有预期数据的 DRF 可浏览 API。

这让我验证了...

if not DEBUG:
    REST_FRAMEWORK = {
        "DEFAULT_RENDERER_CLASSES": (
            "rest_framework.renderers.JSONRenderer",
        )
    }

...在 settings.py 中,我确定我缺少最后一个 ','(另请参阅:https://testdriven.io/courses/tdd-django/deployment/#H-1-browsable-api

修复该问题并在 Dockerfile.prod 中再次禁用调试模式后,我重建了映像,将其推送到 heroku 容器注册表并发布了它。现在,我从

得到了预期的 JSON 响应
https://APP_NAME.herokuapp.com/api/movies/