Django Collectstatic команда что-то изменила
Так что я никогда не развертывал приложение Django и пытаюсь в полной мере освоиться. Я выполнил команду collectstatic, и теперь мои статические файлы не будут отображаться. Когда я запускаю команду findstatic, я получаю исключение, которое говорит:
django.core.exceptions.ImproperlyConfigured: The storage backend of the staticfiles finder <class 'django.contrib.staticfiles.finders.DefaultStorageFinder'> doesn't have a valid location.
Мой шаблон рендеринга просто найти, но я не могу понять, почему файл CSS не найден. Выделите из моего модуля настроек:
settings/
base.py
devel.py
prod.py
base.py
cwd = os.path.dirname(os.path.abspath(__file__))
PROJECT_ROOT = cwd[:-9] # chop off "settings/"
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.DefaultStorageFinder',
]
TEMPLATE_LOADERS = [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
'django.template.loaders.eggs.Loader',
]
TEMPLATE_DIRS = [
os.path.join(PROJECT_ROOT, "templates"),
]
devl.py
STATIC_URL = "/site_media/static/"
STATICFILES_DIRS = [
os.path.join(PROJECT_ROOT, "site_media", "static"),
]
STATIC_ROOT = os.path.join(PROJECT_ROOT, "site_media", "static")
site_base.html
<link rel="stylesheet" href="{{ STATIC_URL }}css/site_base.css" />
Буду признателен за вашу помощь, потому что я в тупик.
1 ответ
Обновить:
Оказалось, что отсутствует контекстный процессор. Чтобы получить настройку STATIC_URL внутри шаблона, необходимо зарегистрировать staticfiles
контекстный процессор:
TEMPLATE_CONTEXT_PROCESSORS = [
...
'django.core.context_processors.static',
...
]
Первый удар:
Похоже, вам нужно добавить этот каталог в список статических источников (см. Комментарий выше):
# list of input paths for collectstatic
STATICFILES_DIRS = [
os.path.join(PROJECT_ROOT, "tulsa", "static"),
# you'll want to remove this path:
#os.path.join(PROJECT_ROOT, "site_media", "static"),
]
# output path for collectstatic
STATIC_ROOT = os.path.join(PROJECT_ROOT, "site_media", "static")