Django не загружает CSS (статические файлы)

Я новичок в Django, пытаюсь применить CSS-файл (хранящийся в base/static/css) к базовой странице веб-приложения. По какой-то причине файл не применяется к странице, и я получаю вывод "GET /social/ HTTP/1.1" 200 29461, когда я обновляю страницу. Я пытался применить другие ответы на ту же проблему, например убедиться, что django.contrib.staticfiles и моя базовая папка socialnetwork находятся в INSTALLED_APPS, использовать STATICFILES_DIRS вместо STATIC_ROOT (в сочетании с использованием python manage.py collectstatic в терминале) или указать их в разные папки, а также поместить

urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)

в моем файле urls.py, который сработал один раз, а затем сразу же вернулся к той же ошибке (я также попробовал использовать staticfiles_urlpatterns() вместо этого). Просмотрев документацию, я попробовал отключить и очистить недавний кэш с помощью Developer Tools в браузере, а также вручную перезапустить сервер с помощью Ctrl+C и python manage.py runserver, и оба способа, похоже, не дали эффекта (хотя после удаления кэша я получил 404 ошибку для некоторых медиафайлов, которая быстро исчезла).

Ранее у меня была похожая проблема с загрузкой медиафайлов, но она была легко исправлена с помощью

urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

, который, похоже, не работает здесь для статических файлов.

В моем проекте используется runserver, который, судя по другим ответам, не самый лучший, хотя я использую этот проект только локально на своем ПК. Мои файлы выглядят следующим образом:

socialnetwork/landing/templates/base.html

<!doctype html>
<html lang="en">
  <head>
    
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <script src="https://kit.fontawesome.com/a3159a882f.js" crossorigin="anonymous"></script>

    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    
    {% load static %}
    <link href="{% static 'css/style.css' %}" type="text/css" rel="stylesheet">

    <title>Social Network</title>
  </head>
  <body>
    {% include 'landing/navbar.html' %}
    {% block content %}
    {% endblock content %}

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
  </body>
</html>

socialnetwork/socialnetwork/urls.py

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('landing.urls')),
    path('accounts/', include('allauth.urls')),
    path('social/', include('social.urls')),
]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Затем в файле socialnetwork/socialnetwork/settings.py у меня есть

INSTALLED_APPS = [
    'socialnetwork',
    'social',
    'static',
    'landing',
    'allauth',
    'crispy_forms',
    'crispy_bootstrap5',
    'allauth.account',
    'allauth.socialaccount',
    'django.contrib.admin',
    'django.contrib.auth',
    "django.contrib.sites",
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

и

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

с DEBUG = True.

Для страницы, которую я рендерю (post_list.html), связанные представления в socialnetwork/social/views.py возвращают render(request, 'social/post_list.html', context). Наконец, структура моих файлов выглядит примерно так

social network
> landing
  -> templates
     -> base.html
> media
> social
  -> templates
     -> post_list.html
  -> models.py
  -> urls.py
  -> views.py
> socialnetwork
  -> settings.py
  -> urls.py
> static
  -> admin
  -> css
     -> style.css
> templates
> manage.py

Спасибо, что прочитали, я постарался включить все, что считаю нужным. Есть ли решение или что-то, что я упустил из виду?

вставьте STATIC_ROOT настройки в файл settings.py.

Как показано ниже. Собрать


STATIC_ROOT = 'your collect static folder path relative to project folder'

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

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