对于带有图像的特定页面,使用Django在Heroku上收到服务器错误500(静态由WhiteNoise服务)

时间:2019-02-10 17:22:25

标签: django heroku static django-staticfiles whitenoise

在过去的几个小时中,我一直在Stack Overflow中搜索修复程序,但是有关Server Error 500的大多数帖子都无法为我提供修复程序。 Django无法找到静态图片,并返回500。图片位于static / css / images中。

例如,我尝试获取https://monkeyparliament.herokuapp.com/about/。日志返回:

2019-02-10T17:09:33.362724+00:00 app[web.1]: ValueError: Missing staticfiles manifest entry for 'css\images\donate.png'
2019-02-10T17:09:33.363611+00:00 app[web.1]: 10.31.121.50 - - [10/Feb/2019:17:09:33 +0000] "GET /about/ HTTP/1.1" 500 27 "https://monkeyparliament.herokuapp.com/music/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36"

但是当我https://monkeyparliament.herokuapp.com/music/时,似乎可以在静态文件夹中找到css / js / fonts。随时检查页面源。

我的静态图像由WhiteNoise(http://whitenoise.evans.io/en/stable/)提供。如您在上面看到的,WhiteNoise在需求中。在settings.py中的MIDDLEWARE在django.middleware.security.SecurityMiddleware下面添加了“ whitenoise.middleware.WhiteNoiseMiddleware”。

为什么找不到我的图片?

Procfile

web: gunicorn websitemp.wsgi:application --log-file -

Requirements.txt

dj-database-url==0.5.0
Django==2.0.10
gunicorn==19.9.0
psycopg2==2.7.7
pytz==2018.9
whitenoise==4.1.2

结构

网站是应用程序,websitemp是项目

enter image description here

Github上的项目

如果要查看完整的结构,可以在github上找到所有文件:https://github.com/DennisVerstappen/websitempdjango

谢谢!

2 个答案:

答案 0 :(得分:0)

在主目录中创建一个空文件夹 staticfiles

随后运行python manage.py collectstatic

此后,应使用所有应用程序中的所有静态资产填充它。

注意:实际上,要使事情分开,可以将 static 文件夹移到 Website-Application -应该没什么用

答案 1 :(得分:0)

感谢您的配合。在尝试完您的解决方案后,我注意到斜线

{% static 'css\images\donate.png' %} 

与日志中其他Python文件中的斜线不同。将反斜杠更改为正斜杠解决了我的问题。我使用的文件夹系统符号(Windows)与Heroku使用的文件夹系统符号不同。使用下面的符号有效。

{% static 'css/images/donate.png' %}