Django не видит статические файлы (ошибка 404)
Я столкнулся с проблемой, когда django не видит статические файлы и я получаю ошибку 404 при каждом посещении страницы.
[05/Oct/2021 19:25:07] "GET /static/main/css/index.css HTTP/1.1" 404 1813
Вот мой set.py
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = ( os.path.join('static'), )
# Default primary key field type
Еще одна часть была вырезана
HTML файл
{% load static %}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Hello World</title>
<link rel="stylesheet" href="{% static 'main/css/index.css' %}" />
</head>
Другая часть тоже была вырезана
добавьте это в urls.py
url(r'^media/(?P<path>.*)/$', serve, {'document_root': settings.MEDIA_ROOT}, name = 'media'),
не забудьте импортировать это:
from django.conf import settings
from django.conf.urls import url
from django.views.static import serve
Ваши настройки должны быть следующими:
MEDIA_ROOT = BASE_DIR / 'media'
MEDIA_URL = "/media/"
STATIC_URL = '/media/static/'
STATICFILES_DIRS = (BASE_DIR / 'media/static', )
STATIC_ROOT = 'media/staticfiles/'
добавьте это в ваш основной urls.py
from django.conf.urls import url
from django.views.static import serve
from django.conf.urls.static import static
from django.conf import settings
url(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}),
url(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}),
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root = settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
и в вашем settings.py
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
TEMPLATES_DIR = BASE_DIR / 'templates'
STATIC_DIR = BASE_DIR / 'static'
and in the bottom of you settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
STATIC_DIR,
]
STATIC_ROOT = STATIC_CDN
это должно работать для вас и скажите мне, если проблема все еще не решена и обновить ваш вопрос, что вы пробовали
IDK что это была за проблема, но я решил ее, создав новый проект и используя виртуальное окружение. Теперь все статические файлы видны.
Мой код сейчас:
settings.py
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = [
BASE_DIR / "static"
]
index.html:
{% load static %}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Hello World</title>
<link rel="stylesheet" href="{% static 'main/css/style_index.css' %}"/>
</head>
</html>