Python manage.py collectstatic error: cannot find rest_framework bootstrap.min.css.map (из книги 'Django for APIs')
Я читаю книгу 'Django for APIs' от 'William S. Vincent' (текущее издание для Django 4.0)
В главе 4 я не могу успешно выполнить команду python manage.py collectstatic.
Я получаю следующую ошибку:
Traceback (most recent call last):
File "/Users/my_name/Projects/django/django_for_apis/library/manage.py", line 22, in <module>
main()
File "/Users/my_name/Projects/django/django_for_apis/library/manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/Users/my_name/Projects/django/django_for_apis/library/.venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
utility.execute()
File "/Users/my_name/Projects/django/django_for_apis/library/.venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/my_name/Projects/django/django_for_apis/library/.venv/lib/python3.10/site-packages/django/core/management/base.py", line 402, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/my_name/Projects/django/django_for_apis/library/.venv/lib/python3.10/site-packages/django/core/management/base.py", line 448, in execute
output = self.handle(*args, **options)
File "/Users/my_name/Projects/django/django_for_apis/library/.venv/lib/python3.10/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 209, in handle
collected = self.collect()
File "/Users/my_name/Projects/django/django_for_apis/library/.venv/lib/python3.10/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 154, in collect
raise processed
whitenoise.storage.MissingFileError: The file 'rest_framework/css/bootstrap.min.css.map' could not be found with <whitenoise.storage.CompressedManifestStaticFilesStorage object at 0x102fa07f0>.
The CSS file 'rest_framework/css/bootstrap.min.css' references a file which could not be found:
rest_framework/css/bootstrap.min.css.map
Please check the URL references in this CSS file, particularly any
relative paths which might be pointing to the wrong location.
У меня точно такие же настройки, как в книге, в settings.py:
STATIC_URL = "static/"
STATICFILES_DIRS = [BASE_DIR / "static"] # new
STATIC_ROOT = BASE_DIR / "staticfiles" # new
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage" # new
Я не смог найти никакого объяснения этому. может быть, кто-то может направить меня в правильном направлении.
У вас есть STATIC_ROOT
, указывающий на BASE_DIR / "staticfiles"
, а затем на STATIC_URL = "static/"
. Заставьте их указывать на одну и ту же статическую папку следующим образом.
STATIC_URL = '/static/'
STATIC_DIR = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static")
]
Это связано с Django 4.1: либо перейдите на Django 4.0, либо просто создайте следующие пустые файлы в одном из ваших статических каталогов:
static/rest_framework/css/bootstrap-theme.min.css.map
static/rest_framework/css/bootstrap.min.css.map
Недавно в ManifestStaticFilesStorage
были внесены изменения, и теперь он пытается заменить исходные карты их хэшированными аналогами.
Django REST framework совсем недавно добавил карты исходников bootstrap css, но еще не выпущен.