Привет всем! Мне нужна помощь с настройкой static. У меня возникла проблема, и я не понимаю, что именно идет не так.

Как мне настроить статические файлы в моем проекте? Я получаю ошибку 404 при попытке доступа к статическим файлам. Вот что выводится в моей консоли. 
```
[05/Jan/2024 12:30:35] "GET / HTTP/1.1" 200 11899
[05/Jan/2024 12:30:35] "GET /static/js/scripts.js HTTP/1.1" 404 1798
[05/Jan/2024 12:30:35] "GET /static/css/styles.css HTTP/1.1" 404 1801
[05/Jan/2024 12:30:37] "GET /static/css/styles.css HTTP/1.1" 404 1801
[05/Jan/2024 12:30:37] "GET /static/js/scripts.js HTTP/1.1" 404 1798
```
Это мой текущий код в настройках:  
```
STATIC_URL = 'static/'
STATIC_DIRS = ['static/']
MEDIA_URL ='media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
```
и это в моем файле home.html:  
1. {% load static %}
2. {% static 'assets/favicon.ico' %}
3. {% static 'css/styles.css' %}
4. {% static 'js/scripts.js' %}
  • 5 января 2024 г. 12:48
Ответы на вопрос 1
В отрывке кода, который вы предоставили, есть пара ошибок которые могут вызывать проблему с загрузкой статических файлов:

1. В настройках Django `STATIC_DIRS` должно быть `STATICFILES_DIRS`. Это стандартное имя переменной для указания путей, где Django будет искать статические файлы кроме стандартных папок внутри каждого приложения.

2. Вы указали `STATIC_URL` как просто `'static/'`, но обычно перед этим должен идти слэш, чтобы путь был от корня сайта, т.е. `'/static/'`.

Вот как должна выглядеть исправленная секция настроек для статических файлов:

```python
import os

STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
```

Теперь, убедитесь, что файлы `styles.css` и `scripts.js` действительно находятся в папке `static/css/` и `static/js/` в вашем проекте Django соответственно. Также стоит проверить нет ли опечаток в названиях директорий и файлов.

Также в шаблоне `home.html` должен быть использован тег `{% static '' %}` для получения полного пути к файлу. В вашем текущем шаблоне выдается лишь ошибка, так как это не правильный синтаксис. Вместо простого вызова тега `{% static %}` передайте путь к вашему статическому файлу внутри кавычек как аргумент. Например:

```html
{% load static %}

<link rel="icon" href="{% static 'assets/favicon.ico' %}" type="image/x-icon">
<link rel="stylesheet" href="{% static 'css/styles.css' %}">
<script src="{% static 'js/scripts.js' %}"></script>
```

После внесения этих изменений убедитесь, что запускаете сервер разработки Django командой `python manage.py runserver`. Django автоматически обслуживает статические файлы в режиме разработки, но для продакшена вам понадобится отдельная настройка (например, использование веб-сервера вроде Nginx или Apache для обслуживания статических файлов).

Надеюсь, это поможет решить вашу проблему!
Похожие вопросы