Django collectstatic не собирает медиафайлы из папки сборки response npm

У меня есть приложение для реагирования на интерфейс, после использования 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 проверьте элемент заголовков:

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

Как мне заставить его отображать мой веб-значок. Спасибо!

1 ответ

Решение

Из документации ясно, что Django collectstatic ищет только файлы в папках, установленных в

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

Это скопирует все файлы из ваших статических папок в каталог STATIC_ROOT.

ваш значок нет ни в одном из перечисленных директорий статических файлов


Во-вторых, статические файлы Django доступны только из полного пути STATIC_URL (вы не можете использовать только.home/ path)

Исправление будет одним из следующих

  • просто добавить значок внутри статической папки
  • использовать ngnix для обслуживания статических файлов и добавления правильных блоков (предпочтительно)
  • измените STATIC_ROOT='/var/www/web/home/' и STATIC_URL = 'home/' (обратите внимание, что таким образом index.html и остальные файлы дома будут доступны как статические файлы)
Другие вопросы по тегам