#python #css #django #frontend
Вопрос:
Я столкнулся с проблемой, когда django не может видеть статические файлы, и я получаю ошибку 404 при каждом посещении страницы.
[05/Oct/2021 19:25:07] "GET /static/main/css/index.css HTTP/1.1" 404 1813
Вот мой setting.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>
Другая часть тоже была вырезана
Комментарии:
1. вы
serve
использовали средства массовой информации в URL-адресах?2. Вам нужно добавить
BASE_DIR
в записьSTATICFILES_DIRS
? Что-то вродеos.path.join(BASE_DIR, 'static')
3. Можете ли вы поделиться тем
urls.py
, где вы добавили представления для доступа к статическим файлам?DEBUG
Настроено наTrue
?4. ОТЛАДКА верна @WillemVanOnsem
5. @WillemVanOnsem из django.url-адреса путь импорта, включая из . url-шаблоны импорта представлений = [ путь(«, представления.индекс), путь(«о», представления.о) ]
Ответ №1:
добавьте это в свое приложение urls.py
url(r'^media/(?P<path>.*)/
не забудьте импортировать это:
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/'
Комментарии:
1. Нужно ли мне каким-либо образом менять папки?
2. @goozzy вам просто нужно создать
media
папку в папке проекта и создатьstatic
папку в папке мультимедиа3. Все равно не работает. -Я вставил первую часть кода
urls.py
в массив ссылок-вставил вторую частьurls.py
-изменил значенияsettings.py
и вставил части, которых там не было4. вы изменили значение
href
link
в html-файлах для css-файлов? чтобыhref='{% static "css/index.css" %}'
?
Ответ №2:
добавьте это в свой основной 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>.*)
и в тебе 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
это должно сработать для вас, и скажите мне, если проблема все еще не решена, и обновите свой вопрос, что вы пробовали
Комментарии:
1. STATIC_CDN не определен
2. STATIC_CDN = BASE_DIR / 'статические файлы' добавьте это в свой settings.py чтобы и создать имя папки "staticfiles", в которой mange.py это решит вашу проблему
3. @goozzy это сработало для тебя или нет?
4. Большое вам спасибо, моя проблема была решена путем создания нового проекта и выполнения обычных шагов.
Ответ №3:
Я понял, в чем была проблема, но я решил ее, создав новый проект и используя виртуальную среду. Теперь видны все статические файлы.
Теперь мой код:
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>
Структура папок
, serve, {'document_root': settings.MEDIA_ROOT}, name = 'media'),
не забудьте импортировать это:
ваши настройки должны быть такими:
Комментарии:
1. Нужно ли мне каким-либо образом менять папки?
2. @goozzy вам просто нужно создать
media
папку в папке проекта и создатьstatic
папку в папке мультимедиа3. Все равно не работает. -Я вставил первую часть кода
urls.py
в массив ссылок-вставил вторую частьurls.py
-изменил значенияsettings.py
и вставил части, которых там не было4. вы изменили значение
href
link
в html-файлах для css-файлов? чтобыhref='{% static "css/index.css" %}'
?
Ответ №2:
добавьте это в свой основной urls.py
и в тебе settings.py
это должно сработать для вас, и скажите мне, если проблема все еще не решена, и обновите свой вопрос, что вы пробовали
Комментарии:
1. STATIC_CDN не определен
2. STATIC_CDN = BASE_DIR / 'статические файлы' добавьте это в свой settings.py чтобы и создать имя папки "staticfiles", в которой mange.py это решит вашу проблему
3. @goozzy это сработало для тебя или нет?
4. Большое вам спасибо, моя проблема была решена путем создания нового проекта и выполнения обычных шагов.
Ответ №3:
Я понял, в чем была проблема, но я решил ее, создав новый проект и используя виртуальную среду. Теперь видны все статические файлы.
Теперь мой код:
settings.py
index.html:
Структура папок
, serve,{'document_root': settings.MEDIA_ROOT}),
url(r'^static/(?P<path>.*)и в тебе settings.py
это должно сработать для вас, и скажите мне, если проблема все еще не решена, и обновите свой вопрос, что вы пробовали
Комментарии:
1. STATIC_CDN не определен
2. STATIC_CDN = BASE_DIR / 'статические файлы' добавьте это в свой settings.py чтобы и создать имя папки "staticfiles", в которой mange.py это решит вашу проблему
3. @goozzy это сработало для тебя или нет?
4. Большое вам спасибо, моя проблема была решена путем создания нового проекта и выполнения обычных шагов.
Ответ №3:
Я понял, в чем была проблема, но я решил ее, создав новый проект и используя виртуальную среду. Теперь видны все статические файлы.
Теперь мой код:
settings.py
index.html:
Структура папок
, serve, {'document_root': settings.MEDIA_ROOT}, name = 'media'),
не забудьте импортировать это:
ваши настройки должны быть такими:
Комментарии:
1. Нужно ли мне каким-либо образом менять папки?
2. @goozzy вам просто нужно создать
media
папку в папке проекта и создатьstatic
папку в папке мультимедиа3. Все равно не работает. -Я вставил первую часть кода
urls.py
в массив ссылок-вставил вторую частьurls.py
-изменил значенияsettings.py
и вставил части, которых там не было4. вы изменили значение
href
link
в html-файлах для css-файлов? чтобыhref='{% static "css/index.css" %}'
?
Ответ №2:
добавьте это в свой основной urls.py
и в тебе settings.py
это должно сработать для вас, и скажите мне, если проблема все еще не решена, и обновите свой вопрос, что вы пробовали
Комментарии:
1. STATIC_CDN не определен
2. STATIC_CDN = BASE_DIR / ‘статические файлы’ добавьте это в свой settings.py чтобы и создать имя папки «staticfiles», в которой mange.py это решит вашу проблему
3. @goozzy это сработало для тебя или нет?
4. Большое вам спасибо, моя проблема была решена путем создания нового проекта и выполнения обычных шагов.
Ответ №3:
Я понял, в чем была проблема, но я решил ее, создав новый проект и используя виртуальную среду. Теперь видны все статические файлы.
Теперь мой код:
settings.py
index.html:
Структура папок
, 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
это должно сработать для вас, и скажите мне, если проблема все еще не решена, и обновите свой вопрос, что вы пробовали
Комментарии:
1. STATIC_CDN не определен
2. STATIC_CDN = BASE_DIR / ‘статические файлы’ добавьте это в свой settings.py чтобы и создать имя папки «staticfiles», в которой mange.py это решит вашу проблему
3. @goozzy это сработало для тебя или нет?
4. Большое вам спасибо, моя проблема была решена путем создания нового проекта и выполнения обычных шагов.
Ответ №3:
Я понял, в чем была проблема, но я решил ее, создав новый проект и используя виртуальную среду. Теперь видны все статические файлы.
Теперь мой код:
settings.py
index.html:
Структура папок
, serve, {‘document_root’: settings.MEDIA_ROOT}, name = ‘media’),не забудьте импортировать это:
ваши настройки должны быть такими:
Комментарии:
1. Нужно ли мне каким-либо образом менять папки?
2. @goozzy вам просто нужно создать
media
папку в папке проекта и создатьstatic
папку в папке мультимедиа3. Все равно не работает. -Я вставил первую часть кода
urls.py
в массив ссылок-вставил вторую частьurls.py
-изменил значенияsettings.py
и вставил части, которых там не было4. вы изменили значение
href
link
в html-файлах для css-файлов? чтобыhref='{% static "css/index.css" %}'
?
Ответ №2:
добавьте это в свой основной urls.py
и в тебе settings.py
это должно сработать для вас, и скажите мне, если проблема все еще не решена, и обновите свой вопрос, что вы пробовали
Комментарии:
1. STATIC_CDN не определен
2. STATIC_CDN = BASE_DIR / ‘статические файлы’ добавьте это в свой settings.py чтобы и создать имя папки «staticfiles», в которой mange.py это решит вашу проблему
3. @goozzy это сработало для тебя или нет?
4. Большое вам спасибо, моя проблема была решена путем создания нового проекта и выполнения обычных шагов.
Ответ №3:
Я понял, в чем была проблема, но я решил ее, создав новый проект и используя виртуальную среду. Теперь видны все статические файлы.
Теперь мой код:
settings.py
index.html:
Структура папок