【问题标题】:Heroku Django static files not found找不到 Heroku Django 静态文件
【发布时间】:2020-05-13 20:30:10
【问题描述】:

在引用静态文件(例如 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' %}">

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

# 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

更新:根据 cmets 的建议,我已按照 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 在运行时仍然找不到它们。

【问题讨论】:

  • @SwetankPoddar:谢谢!试了一下,有些东西改变了,但仍然没有找到。我用这次尝试的结果更新了问题。
  • @SwetankPoddar:如果我还添加白噪声,它就会起作用。请将此添加为答案,以便我为您提供信用。

标签: django heroku


【解决方案1】:

根据Dev Center of Heroku...

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

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

【讨论】:

    猜你喜欢
    • 2017-07-12
    • 2012-07-16
    • 2016-03-11
    • 2021-08-27
    • 2014-11-10
    • 2011-08-26
    • 2020-06-22
    • 2021-08-16
    相关资源
    最近更新 更多