Django 404 css файл
Долгое время я пытался решить проблему с загрузкой всех моих статических файлов. Когда я нашел рабочее решение, все svg начали загружаться, но css файлы не загружались.
Вот мой settings.py (показывающий только основные вещи)
import mimetypes
mimetypes.add_type("text/css", ".css", True)
BASE_DIR = Path(__file__).resolve().parent.parent
DEBUG = False
STATIC_URL = '/static/'
if DEBUG: STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
else: STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Вот мой urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf.urls import url
from django.conf import settings
from django.views.static import serve
urlpatterns = [
path('', include('main.urls')),
url(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}),
]
Вот пример использования css файлов в моих шаблонах
{% load static %}
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-v4-grid-only@1.0.0/dist/bootstrap-grid.min.css">
<link rel="stylesheet" type="text/css" href=" {% static 'css/reset.css' %}">
<link rel="stylesheet" type="text/css" href=" {% static 'css/main.css' %}">
А это ошибка в Chrome Console
Refused to apply style from '<URL>' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
А также я не могу открыть файлы css в новой вкладке. Я получаю эту ошибку
Также, если вы уберете %20 из адресной строки, то я открою файл css
P.S. Я пытаюсь его развернуть
1- Попытка заменить путь на косую черту вперед
<link rel="stylesheet" type="text/css" href=" {% static '/css/reset.css' %}">
2- whitenoise
pip install whitenoise
Затем установите значение "MIDDLEWARE" в файле "settings.py". Наконец, CSS успешно загружается:
MIDDLEWARE = [
# ...
"django.middleware.security.SecurityMiddleware",
"whitenoise.middleware.WhiteNoiseMiddleware", # Here
# "whitenoise" will solve "MIME type" error then CSS is loaded successfully:
]
3- измените ваш статический URL следующим образом:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Думаю, ваша ошибка в том, что вы поставили пробел перед вашей статической ссылкой
<link rel="stylesheet" type="text/css" href=" {% static 'css/reset.css' %}">
Попробуйте убрать пробел перед {%, чтобы он стал
<link rel="stylesheet" type="text/css" href="{% static 'css/reset.css' %}">
%20 переводится как символ пробела в URL, поэтому я думаю, что проблема именно в этом