Статические 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 не связывается и изменения не применяются.

То, что я пробовал:

  1. Зашел в настройки очистил кэш браузера
  2. отключил кэширование в режиме разработчика
  3. добавили версию css файла v1.1 для принудительного восстановления (вызвало 404 ошибку сверху)
  4. Запустите collectstatic в терминале
  5. Очистил кэш открыл сайт в частном окне
  6. Просмотрел несколько видео на youtube по настройке статического файла dir и думаю, что все правильно. В какой-то момент времени мой css загружался и обновлялся, когда я вносил изменения.

Макет каталога

enter image description here

Вот мои настройки

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 и посмотреть, устранит ли это проблему.

Вернуться на верх