找不到Heroku Django静态文件

时间:2020-05-13 20:30:10

标签: django heroku

在引用静态文件(例如CSS)时,Heroku上的Django应用出现错误。 在我的本地Linux机器上运行站点时会找到文件,但在Heroku上部署时找不到。 我已经看过Django documentation与静态文件有关的内容,但是我不明白自己在做什么错。

django.contrib.staticfiles包含在我的INSTALLED_APPS中。

my_site/settings.py中,我有STATIC_URL = '/static/'

在我的HTML模板中

{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'reco/style.css' %}">

结果是在本地运行而不是在Heroku上运行时找到了CSS文件。 我怎样才能解决这个问题?我想要最简单的解决方案-这是一个很小的网站。

# Log message when running the app on the local machine: file is found and has not changed (correct)
[13/May/2020 15:02:52] "GET /static/reco/style.css HTTP/1.1" 304 0
# Log message when running the app on Heroku: not found. Why?
2020-05-13T20:09:20.327218+00:00 app[web.1]: Not Found: /static/reco/style.css

更新:根据评论的建议,我已经按照Heroku Django documentation

的建议配置了该网站
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'    
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'reco', 'static'),
)

现在,当我部署到Heroku时,我看到collectstatic正在收集我的静态文件-但Heroku仍然在运行时找不到它们。

1 个答案:

答案 0 :(得分:1)

根据Dev Center of Heroku ...

您需要安装whitenoise才能在生产模式下提供静态文件。

按照here上的安装说明进行操作。