Django не видит статические файлы (ошибка 404)

#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>
 

Другая часть тоже была вырезана

Мои файлы (png)

Комментарии:

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:


Структура папок

Структура папок