-1

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

  • 建造
    • favicon.ico
    • 索引.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">

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

4

1 回答 1

2

在文档中很清楚 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 中的其余文件可以作为静态文件访问)
于 2020-06-19T16:25:32.957 回答