You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django部署至Heroku后出现Internal Server Error问题求助

核心结论

不要将.env文件推送到Heroku服务器,也不要提交到代码仓库,.env属于本地开发用的敏感配置文件,生产环境使用Heroku自带的环境变量管理能力即可,同时你当前配置里还有其他会触发500错误的问题,统一修复步骤如下:


第一步:修复ALLOWED_HOSTS配置错误

你当前的ALLOWED_HOSTS填写不符合Django要求,该配置仅接受域名/IP,不能携带协议、端口、路径后缀,修改为如下内容:

ALLOWED_HOSTS = ['127.0.0.1', 'stripetestdjango.herokuapp.com', 'localhost']

第二步:在Heroku配置环境变量(替代.env文件作用)

有两种配置方式二选一即可:

  • Heroku后台配置:打开你的Heroku应用管理页,点击「Settings」标签,找到「Config Vars」板块,点击「Reveal Config Vars」,手动逐条添加你本地.env文件里的所有键值对即可
  • Heroku CLI批量配置:安装Heroku命令行工具并登录后,在本地项目根目录执行如下命令,可自动批量导入.env内的变量(注意提前删除.env里本地专属的配置如DEBUG=True这类)
cat .env | grep -v ^# | xargs heroku config:set -a 替换为你的Heroku应用名

如果需要单独设置某一个变量,执行:

heroku config:set 变量名=变量值 -a 替换为你的Heroku应用名

第三步:其他可能导致500的配置修复

  1. 建议恢复whitenoise的静态文件存储配置,否则可能出现静态资源加载异常触发报错,修改为:
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
  1. 替换不严谨的DEBUG判断逻辑,不要用工作目录判断是否是生产环境,建议新增一个专属环境变量判断:
    首先在Heroku的Config Vars里新增键为HEROKU_DEPLOY,值为1的变量,然后修改settings.py里的判断逻辑为:
if os.getenv('HEROKU_DEPLOY'):
    DEBUG = False
  1. 部署完成后手动执行一次数据库迁移,避免未建表导致的500错误:
heroku run python manage.py migrate -a 替换为你的Heroku应用名
  1. 如果还未定位到问题,可以临时将DEBUG改为True部署一次,查看具体报错信息,排查完成后立刻改回False即可。

内容的提问来源于stack exchange,提问作者user14653534

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:45:03