【问题标题】:Django collectstatic does not collect media files from react npm build folderDjango collectstatic 不会从 react npm build 文件夹中收集媒体文件
【发布时间】:2020-10-09 22:24:01
【问题描述】:

我有一个前端反应应用程序,在使用 npm run build 后,它会创建构建文件夹:

  • 构建
    • favicon.ico
    • index.html
    • service-woker.js
    • 静态

使用django的python manage.py collectstatic后发现django的做法是只拉出静态文件夹,favicon.ico没有拉出。所以,我的网站图标不起作用。

在我的 index.html 中,<link rel="apple-touch-icon" href="%PUBLIC_URL%/favicon.ico" />

在我的 settings.py 中

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, '../frontend/build/static')
]
STATIC_ROOT = '/var/www/web/home/static/'
STATIC_URL = 'home/static/'

在 chrome 中检查 headers 元素:

<link rel="icon" href="./home/favicon.ico">

如何让它显示我的网络图标。谢谢!

【问题讨论】:

标签: django favicon collectstatic npm-build


【解决方案1】:

在文档中很清楚 Django collectstatic 只查找文件夹中设置的文件

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, '../frontend/build/static')
]

这会将静态文件夹中的所有文件复制到 STATIC_ROOT 目录。

您的网站图标不在任何列出的静态文件目录中


第二件事是 Django 静态文件只能从完整的 STATIC_URL 路径访问(你不能只使用 .home/ 路径)

修复将是以下之一

  • 在静态文件夹中简单地添加图标
  • 使用ngnix 提供静态文件并添加适当的块(首选)
  • 更改 STATIC_ROOT='/var/www/web/home/' 和 STATIC_URL = 'home/'(注意这样 index.html 和 home 中的其他文件可以作为静态文件访问)

【讨论】:

    猜你喜欢
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2016-02-27
    • 1970-01-01
    • 2019-10-06
    相关资源
    最近更新 更多