Не работает файл css в python django
Делаю темную тему для шаблона в проекте Django.
У меня есть базовый шаблон, находящийся в отдельной папке layout.
{% load static %}
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<!-- другие link -->
<link rel="stylesheet" href="{% static 'CSS/light.css' %}" id="theme">
<title>Color battle</title>
</head>
<body>
{% block home %}
{% endblock %}
</body>
<script src="{% static 'JS/scripting.js' %}"></script>
</html>
light.html - основной шаблон, который находится в другой папке и меняется на шаблон dark.html при нажатии на кнопку в profile.html.
<div>
<button id="switchMode">Меняй</button>
</div>
К кнопке подключен script.js
let switchMode = document.getElementById("switchMode");
switchMode.onclick = function () {
let theme = document.getElementById("theme");
if (theme.getAttribute("href") == "light.css") {
theme.href = "dark.css";
} else {
theme.href = "light.css";
}
}
Скрипт принимается, и light.css отображает profile.html со всеми стилями, но после нажатия на кнопку все стили пропадают и выводится ошибка (Vanilin_Ivanov - имя пользователя)
Refused to apply style from 'http://127.0.0.1:8000/profile/Vanilin_Ivanov/dark.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
Я знаю, что это говорит о том, что css-файл не найдет, но он же правильно подключен и отображает стили, что делать?
Ответы (1 шт):
Что то подобное было. Джанго не видел ни css ни js. В итоге решил этот вопрос с помощью изменения подключения статики в settings.py Попробуйте этот код, я свой закоментил, вставил этот код и вуаля все мои изменения в статике заработали и все начало работать. Даже потом, когда я снова свой стандартный код раскоментил, а это подключение стаики убрал, все уже работало. Надеюсь поможет комуто. Мне так помогло. Отпишитесь кому поможет.
STATIC_URL = '/static/'
STATICFILES_DIRS = (
'static',
)
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
На сколько я понял, BASE_DIR дает нам каталог нашего проекта. Поэтому, когда мы делаете os.path.join(BASE_DIR, 'myproject/static'), это становится myproject/myproject/static.
Или '/static'), надо указывать 'static/'),или попробуйте так '/').
Надеюсь поможет комуто. Мне так помогло. Отпишитесь кому поможет.