Почему collectstatic не будет копировать мои статические файлы?

У меня есть каталог MyApp/static/MyApp

Когда я запускаю. /manage.py collectstatic, я ожидаю, что каталог MyApp будет скопирован в STATIC_ROOT, но он не

У меня также есть DownloadedApp/static/DownloadedApp и его скопировано в STATIC_ROOT.

Что мне не хватает?

Ответ 1

Каковы STATIC_ROOT, STATICFILES_FINDERS и STATICFILES_DIRS в settings.py?

Когда выполняется collectstatic, значение по умолчанию STATICFILES_FINDERS django.contrib.staticfiles.finders.FileSystemFinder будет собирать ваши статические файлы из любых путей, которые у вас есть в STATICFILES_DIRS.

Другое значение по умолчанию STATICFILES_FINDERS django.contrib.staticfiles.finders.AppDirectoriesFinder будет выглядеть в папке /static/ любых приложений в вашем INSTALLED_APPS.

Все статические файлы, которые будут найдены, будут помещены в указанный каталог STATIC_ROOT.

Посмотрите эту ссылку на сборные документы

И эта ссылка объясняет различные статические настройки в settings.py

Вы также можете использовать python manage.py findstatic, чтобы посмотреть, какие каталоги collectstatic будут выглядеть.

Ответ 2

Это случилось со мной, и я случайно поставил каталог статических файлов приложения в файл .gitignore. Так что на моей локальной машине он собрал все, что было хорошо, но в производстве на самом деле отсутствовали статические файлы (gitignored).

Ответ 3

Это случилось со мной, потому что, исследуя ошибку, возникающую в определенные даты, меняли дату и время моего компьютера.

Следовательно, это нарушало такие вещи, как collectstatic, а также история моего браузера.

Не изменяйте дату и время вашего компьютера.

Ответ 4

У меня сложилось впечатление, что сравнение будет основано на содержании. Оказалось, что на основе даты. Так что не связывайтесь с вашими файлами после collecstatic.

Ответ 5

Один быстрый обходной путь, хотя это не устраняет и не объясняет ПОЧЕМУ это происходит, заключается в следующем:

  1. перейдите в каталог файлов вашего проекта и переименуйте папку "static" вашего проекта во что-то еще, например "static-old"
  2. создайте новую пустую папку с именем "static" в каталоге вашего проекта
  3. теперь, если вы запустите python manage.py collectstatic он увидит, что в вашей статической папке ничего нет, и скопирует ВСЕ статические файлы.

Ответ 6

просто сделайте это и сделайте то же самое соглашение об именах

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'assets')

Статическая директория содержит все ресурсы вашего проекта

Каталог assets создаст автоматически, когда вы запустите этот cmd

python3 manage.py collectstatic

это скопирует все содержимое статической папки в папку ресурсов

надеюсь это поможет :)