Django - 在本地和Heroku上都找不到静态文件

时间:2017-07-13 17:09:19

标签: python django python-3.x docker heroku

我在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解决了我的问题。

0 个答案:

没有答案