我在Heroku上使用Django和Docker的静态文件有问题。 当我打开应用程序时,我在Heroku上收到这样的错误:
2017-07-13T13:37:43.271635+00:00 heroku[router]: at=info method=GET path="/static/rest_framework/js/default.js" host=myapp.herokuapp.com request_id=3bfd8d31-193e-48e8-bb6e-aee9f353ffee fwd="109.173.154.199" dyno=web.1 connect=1ms service=15ms status=404 bytes=291 protocol=https
和本地一样:
django_1 | [13/Jul/2017 13:35:01] "GET /static/rest_framework/js/default.js HTTP/1.1" 404 109
我尝试在许多答案的基础上做到这一点,例如this topic,遗憾的是没有任何效果。有什么建议吗?
我的settings.py
基于Heroku documentation:
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static'),
)
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
我将whitenoise
添加到requirements.txt
。
wsgi.py:
import os
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
解
由于python3 manage.py collectstatic
,我无法运行No such file or directory static in my project tree
。然后python3 manage.py collectstatic
解决了我的问题。