对于带有图像的特定页面(由 WhiteNoise 提供的静态服务),使用 Django 在 Heroku 上接收服务器错误 500
Receive Server Error 500 on Heroku with Django for specific pages with images (static served by WhiteNoise)
在过去的几个小时里,我一直在 Stack Overflow 中搜索修复程序,但大多数关于服务器错误 500 的帖子都无法为我提供修复程序。 Django 找不到静态图像,return 是 500。图像在 static/css/images 中。
例如,我尝试得到https://monkeyparliament.herokuapp.com/about/。日志 return:
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
结构
website 是应用程序,websitemp 是项目
项目 Github
如果您想查看完整结构,可以在 github 上找到所有文件:https://github.com/DennisVerstappen/websitempdjango
提前致谢!
在您的主目录中创建一个空文件夹 staticfiles。
后来运行python manage.py collectstatic
之后它应该填充所有应用程序的所有静态资产。
注意:实际上,要将内容分开,您可以将 static 文件夹移动到 Website-Application - 应该不会有什么不同
感谢您的思考。在尝试了您的解决方案后,我注意到
中的斜线
{% static 'css\images\donate.png' %}
不同于日志中其他 Python 文件中的斜杠。将反斜杠更改为正斜杠解决了我的问题。我使用的文件夹系统符号 (Windows) 与 Heroku 使用的不同。使用下面的符号有效。
{% static 'css/images/donate.png' %}
在过去的几个小时里,我一直在 Stack Overflow 中搜索修复程序,但大多数关于服务器错误 500 的帖子都无法为我提供修复程序。 Django 找不到静态图像,return 是 500。图像在 static/css/images 中。
例如,我尝试得到https://monkeyparliament.herokuapp.com/about/。日志 return:
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
结构
website 是应用程序,websitemp 是项目
项目 Github
如果您想查看完整结构,可以在 github 上找到所有文件:https://github.com/DennisVerstappen/websitempdjango
提前致谢!
在您的主目录中创建一个空文件夹 staticfiles。
后来运行python manage.py collectstatic
之后它应该填充所有应用程序的所有静态资产。
注意:实际上,要将内容分开,您可以将 static 文件夹移动到 Website-Application - 应该不会有什么不同
感谢您的思考。在尝试了您的解决方案后,我注意到
中的斜线{% static 'css\images\donate.png' %}
不同于日志中其他 Python 文件中的斜杠。将反斜杠更改为正斜杠解决了我的问题。我使用的文件夹系统符号 (Windows) 与 Heroku 使用的不同。使用下面的符号有效。
{% static 'css/images/donate.png' %}