Django не загружает изображение со стилей
Django видит изображения в папках, проверял командой ./manage.py findstatic images/logo.png, стиль подгрузился нормально, но в логах нет ни каких упоминаний о logo.png, ни ошибки ни чего, по урлу картинка открывается корректно http://127.0.0.1:5000/images/logo.png.
settings.py:
STATIC_URL = '/static/'
MEDIA_URL = '/images/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
MEDIA_ROOT = os.path.join(
BASE_DIR, 'static/images'
)
urls.py:
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls'))
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
main.css
header .logo a {
display: block;
margin: 0;
padding: 0;
outline: 0;
border: none;
width: 60px;
height: 60px;
background: url("/static/images/logo.png") no-repeat center;
background-size: 60px 60px;
font: 0/0 a;
text-shadow: none;
color: transparent;
-moz-transition: all 0.5s ease-in-out;
-o-transition: all 0.5s ease-in-out;
-webkit-transition: all 0.5s ease-in-out;
-ms-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
}
Лог main.css
[29/Jun/2020 08:17:51] "GET /static/css/base.css HTTP/1.1" 200 13542
Код с шаблона html:
<header class="short-header">
<div class="logo">
<a href="{% url 'home' %}">Home</a>
</div>
</header>
Скрин Network в браузере:
Скрин ошибка в Network:
Сама картинка отображается на странице корректно <img src="{% static 'images/logo.png' %}" alt="">:
При в ставке <style> прям в шаблон код отрабатывает, но необходимо что б все подгружалось через сам css, ниже пример с шаблона html:
{% load static %}
<style>
header .logo a {
display: block;
margin: 0;
padding: 0;
outline: 0;
border: none;
width: 60px;
height: 60px;
background: url("{% static 'images/logo.png' %}") no-repeat center;
background-size: 60px 60px;
font: 0/0 a;
text-shadow: none;
color: transparent;
-moz-transition: all 0.5s ease-in-out;
-o-transition: all 0.5s ease-in-out;
-webkit-transition: all 0.5s ease-in-out;
-ms-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
}
</style>
Что может быть не так?
Ответы (1 шт):
Проблема в том, что css файл отдается, как есть и не обрабатывается движком шаблонов django. Т.е. теги шаблонов типа {% url ... %} или {% static ... %} никто не интерпретирует.
Рабочий способ это создать django view для того, чтобы css файл обрабатывался:
from django.urls import path
from django.views.generic import TemplateView
urlpatterns = [
...
path('path/to/main.css', TemplateView.as_view(
template_name='main.css',
content_type='text/css')
),
...
]
Ну и включить в html:
<link rel="stylesheet" href="{% url 'main.css' %}" type="text/css">


