Django - Не удалось загрузить ресурс: сервер ответил со статусом 404 (Not Found)

Я пытаюсь развернуть приложение Django, которое работает локально, но не работает на моем сайте. Django index.html (шаблон) отображается, но показываются ошибки ниже и не загружается css / js.

Failed to load resource: the server responded with a status of 404 (Not Found) - http://example.com/static/js/main
Failed to load resource: the server responded with a status of 404 (Not Found) - http://example.com/static/css/style.css

Строки, которые я считаю уместными в settings.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'src.pages'
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'pages/static'),
]

Как мне включить файлы в шаблон index.html

{% load static %}
<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}"/>
    </head>
    <body>
        <script src="{% static 'js/main.js' %}"></script>
    </body>
</html>

Структура приложения следующая

web_app/
├── src/
│   ├── config/
│   │   └── settings.py
│   ├── pages/
│   │   ├── static/
│   │   │   ├── css/
│   │   │   │   └── style.css
│   │   │   ├── js/
│   │   │   │   └── main.js
│   │   │   └── fonts/
│   │   ├── templates/
│   │   │   └── pages/
│   │   │       └── index.html
│   │   ├── urls.py
│   │   └── views.py
│   └── static (generated with collectstatic)/
│       ├── admin
│       ├── css/
│       │   └── style.css
│       ├── js/
│       │   └── main.js
│       └── fonts
├── manage.py
└── requirements.txt

Попробовал переместить JS код в index.html и это сработало, так что я предполагаю, что он не может найти статические файлы по какой-то причине.

Я также попробовал установить абсолютный путь к файлу css, но это дает ту же ошибку.

Django не будет обслуживать статические файлы, только сервер разработчиков (runserver) настроен на это, вы либо позволяете статическим файлам обслуживаться с HTTP сервера, который находится перед Django (например, Apache2 или Nginx), что является рекомендуемым методом, либо используйте whitenouse

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