为什么在使用Heroku部署Django时出现内部服务器错误(管理页面仍然有效)?

时间:2019-05-19 21:54:07

标签: python django heroku

我正在尝试将Django网站与带有Heroku的Django一起部署,并且一直显示“内部服务器错误”。在SO上,关于这个相同问题的其他答案都没有解决我的问题,而且我注意到只有将DEBUG设置为False时,我才会遇到这个问题。

我的heroku日志命令显示以下错误:

raise ValueError("Missing staticfiles manifest entry for '%s'" % clean_name)
ValueError: Missing staticfiles manifest entry for '/images/posting/bike.png'

我通过以下方式设置了自己的设置:

ALLOWED_HOSTS = ["stratagembetaapp.herokuapp.com"]
STATIC_URL = "/static/"
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = "/media/"
django_heroku.settings(locals())

此外,完美安装了gunicorn,django-heroku和whitenoise。我的requirements.txt和Procfile也按顺序排列。

我还已经在Heroku shell中运行了“ python manage.py collectstatic”,但是我仍然得到相同的结果。

2 个答案:

答案 0 :(得分:0)

您是否正在使用静态文件服务器?从您的设置来看,您似乎并没有使用它。 Heroku不会存储您的静态文件。这些教程可以引导您完成整个过程。在s3上存储文件不是免费的,但是却非常便宜(前50 TB /月$ 0.023 / GB)

https://www.codingforentrepreneurs.com/blog/s3-static-media-files-for-django/ https://simpleisbetterthancomplex.com/tutorial/2017/08/01/how-to-setup-amazon-s3-in-a-django-project.html https://www.caktusgroup.com/blog/2014/11/10/Using-Amazon-S3-to-store-your-Django-sites-static-and-media-files/

答案 1 :(得分:0)

错误是您引用的模板中的静态文件不存在(或不在正确的位置)。在调试模式下,这不会产生错误,但是在生产环境中会产生错误。

在模板中的某处,您具有如下引用:

{% static '/images/posting/bike.png' %}

我认为这里的错误只是斜线,所以如果您仅使用{% static 'images/posting/bike.png' %},它可能会起作用。