Django项目后台可正常访问,Heroku部署后博客页面加载报错
修复Heroku上Django博客页面加载报错的简单方案
嘿,我之前也碰到过一模一样的情况——部署日志显示成功、本地跑起来完全正常,结果生产环境里只有后台管理页能打开,博客页面一加载就报错。结合你的环境信息(Django 1.11.2、Python 3.6.4),给你几个针对性的简单修复步骤:
1. 检查静态文件配置(最常见原因)
Django 1.11在生产环境没法直接托管静态文件,Heroku上必须借助whitenoise来处理,大概率是这块配置漏了:
- 先安装whitenoise并更新依赖文件:
pip install whitenoise pip freeze > requirements.txt - 修改
settings.py:- 在中间件列表里,把
'whitenoise.middleware.WhiteNoiseMiddleware'放在django.middleware.security.SecurityMiddleware的后面 - 确保添加以下静态文件相关配置:
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
- 在中间件列表里,把
- 重新部署到Heroku:
git add . git commit -m "fix static file setup for heroku" git push heroku master
2. 排查数据库数据或迁移问题
本地可能有测试的博客数据,但Heroku的数据库是空的,页面查询数据时就会触发报错:
- 先查看Heroku数据库的状态:
在shell里尝试查询你的博客模型(比如heroku run python manage.py shellfrom blog.models import Post; Post.objects.all()),看看有没有数据 - 如果是空的,要么从本地导入数据:
先在本地生成数据备份:
再推到Heroku并导入:python manage.py dumpdata --indent 4 > blog_fixture.json
或者直接在Heroku上创建测试数据:git add blog_fixture.json git commit -m "add blog data fixture" git push heroku master heroku run python manage.py loaddata blog_fixture.json
登录后台添加几篇博客文章,再刷新页面试试heroku run python manage.py createsuperuser
3. 临时开启调试看具体错误
如果上面两步没解决,建议临时开启调试模式获取精准报错信息(生产环境记得用完立刻关掉):
- 设置Heroku环境变量开启调试:
heroku config:set DEBUG=True heroku restart - 重新访问博客页面,就能看到详细的错误栈信息,比如模板缺失、字段错误、权限问题等,根据提示修复即可
- 修复完成后记得关闭调试:
heroku config:set DEBUG=False heroku restart
内容的提问来源于stack exchange,提问作者user3505108
相关产品推荐
相关产品推荐

