Статические CSS-файлы не обновляются/не загружаются в проекте Django
Проблема: Ни одно из изменений, которые я делаю в моих CSS файлах, не применяется к моим HTML страницам. Поэтому я попытался очистить кэш, и теперь мой сайт говорит, что не может найти мои статические файлы.
Ошибка при проверке страницы в режиме разработчика
"GET http://127.0.0.1:8000/static/css/style.css%3F net::ERR_ABORTED 404 (Not Found)"
Фон: Я создаю базовый сайт для редактирования изображений, используя django, html/css и внедряя JS для применения некоторых фильтров к изображениям. Раньше я мог вносить изменения и они отражались, но теперь, когда я пытаюсь сделать какие-либо html/css файлы, ни один из css не связывается и изменения не применяются.
То, что я пробовал:
- Зашел в настройки очистил кэш браузера
- отключил кэширование в режиме разработчика
- добавили версию css файла v1.1 для принудительного восстановления (вызвало 404 ошибку сверху)
- Запустите collectstatic в терминале
- Очистил кэш открыл сайт в частном окне
- Просмотрел несколько видео на youtube по настройке статического файла dir и думаю, что все правильно. В какой-то момент времени мой css загружался и обновлялся, когда я вносил изменения.
Макет каталога
Вот мои настройки
Settings.py
BASE_DIR = Path(__file__).resolve().parent.parent
DEBUG = True
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Image_API',
'rest_framework',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'Image_API.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates']
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, '../static'),
]
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), '../static')
HMTL Файлы, ссылающиеся на css
У меня есть статическая загрузка в верхней части страницы и моя ссылка на css в теге header.
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static '/css/style.css?' %}">
Похоже, что проблема может быть связана с настройками STATIC_URL и STATIC_ROOT. Попробуйте изменить их на:
STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
Вы также можете проверить, правильно ли настроен ваш файл urls.py:
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Перезапустите свой сервер после внесения этих изменений, чтобы быть уверенным.
ps: collect static выполняется во время развертывания
Вы могли не заметить и обновить CSS в /staticfiles/css/ Вместо этого попробуйте обновить его в /media/css. Каталог staticfiles автоматически создается при запуске python manage.py collectstatic. Вы можете попробовать удалить каталог staticfiles и запустить python manage.py collectstatic и посмотреть, устранит ли это проблему.
