Шаблоны Django не выбирают статические файлы
Ниже представлена структура моих статических папок:
ProjectABC
- App1
- App2
- App3
- ProjectABC
- resources
- static
- imgs
- css
- templates
Вот как выглядит структура проекта.
Вот как выглядит статическая конфигурация в settings.py:
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
Вот как выглядит файл base.html:
<!doctype html>
{% load static %}
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, maximum-scale=1, initial-
scale=1, user-scalable=0">
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?
family=Open+Sans:400,600,800">
<title>{{SITE_NAME}}</title>
<link rel='shortcut icon' href= "{% static 'img/favicon.png' %}"/>
<link href="{{STATIC_URL}}css/application.css" media="screen" rel="stylesheet"
type="text/css" />
<link href="{{STATIC_URL}}css/style.css" media="screen" rel="stylesheet"
type="text/css" />
<script src="{{STATIC_URL}}js/application.js" type="text/javascript"></script>
{% block extracss %}
{% endblock %}
</head>
<body>
<div class="container">
<h1>Hello</h1>
</div>
</body>
</html>
Все статические файлы загружаются, как видно в терминале, но в браузере загружается только голый html без css или img:
Пожалуйста, дайте мне знать, если я что-то упустил.
Благодарю вас!
<link href="{%static 'css/style.css' %}" media="screen" rel="stylesheet"
type="text/css" />
добавьте settings.py
STATIC_URL = "/static/"
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
Project App Url
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Статический каталог должен находиться под самим приложением. Создайте каталог 'static' непосредственно для вашего приложения, а для лучшей практики вы также можете создать еще один каталог к статическому каталогу с именем вашего приложения (static/[имя_приложения]).
Также, {% load static %} должен быть выше doctype в вашем base.html
измените статический конфиг в вашем settings.py
на следующий:
STATIC_ROOT = os.path.join(BASE_DIR, 'resources/static')
STATIC_URL = 'resources/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'ProjectABC')
]
then run python manage.py collectstatic
и при вызове статического файла сделайте это следующим образом {% static 'css/style.css' %}