Почему Django не загружает мой CSS-файл вместе с HTML?

Я новичок в создании приложений Django и пытаюсь добавить простой CSS-файл в простой HTML-файл для указания стиля. Мне не удается добиться того, чтобы CSS-файл читался в HTML-документе на моем веб-сервере. Не могли бы вы помочь мне с этой проблемой?

Мой каталог выглядит примерно так:

web3/
├── home1/
│   ├── static/
│   │   └── home1/
│   │       └── style.css

где home1 - это приложение, а мой шаблон HTML находится в первой папке home1 (т.е. home1/template/home1/home.html)

Вот что у меня есть в моем html-документе:

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Kirby is the greatest</title>
  
   
   <!-- Link the CSS file -->
   {% load static %}
   <link rel="stylesheet" href="{% static 'home1/style.css'%}">
 
</head>

<body>
  <h1>Great Job</h1>
  <h2>Proud</h2>
</body>

my views.py:

`# home1/views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader

def hello_world(request):
    return HttpResponse("you did it")

def home(request):
    return render(request,"home1/home.html")'

и статическая часть моего файла settings.py:

`# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.0/howto/static-files/

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    BASE_DIR / "home1/static",
]
# Define the directory where 'collectstatic' will place all static files for production
STATIC_ROOT = BASE_DIR / 'staticfiles'

# Default primary key field type
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
`


Первое, что нужно сделать, - это понять, в какой момент происходит сбой. Вероятно, чаще всего статические файлы не добавляются в urlpatterns вашего проекта. Вы можете сделать это в {settings_dir}/urls.py и добавить следующее:

from django.conf import settings
from django.conf.urls.static import static
from django.urls import include, path

urlpatterns = [
    # ... your URLconf goes here ...
]

if settings.DEBUG:
    urlpatterns += [
        static(settings.STATIC_URL, document_root=settings.STATIC_ROOT), # Static files (that you create on development)
        static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # Media files (that are uploaded by users)
    ]

Обратите внимание, что они находятся в состоянии if settings.DEBUG. Обычно при развертывании на сервере он располагается за NGINX или Apache, которые могут перенаправлять запросы "статических файлов" и обслуживать их более эффективно, не загружая основной сервер.

Документы Django о статических и медиафайлах

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