Css и другие активы не загружаются для моего веб-приложения django
CSS, JS, шрифты, изображения и другие активы не загружаются в index.html моего приложения django. Все активы для приложения присутствуют внутри приложения в моем django проекте в разделе "templates/assets". Я попробовал другой ответ, который я получил в качестве предложения на этот вопрос, но даже это решение не сработало для меня.
[04/May/2022 05:48:50] "GET /assets/js/glightbox.min.js HTTP/1.1" 404 2311
Not Found: /assets/js/count-up.min.js
[04/May/2022 05:48:50] "GET /assets/js/count-up.min.js HTTP/1.1" 404 2308
Not Found: /assets/js/main.js
[04/May/2022 05:48:50] "GET /assets/js/main.js HTTP/1.1" 404 2284
Вот структура моего дерева dir :
Project Name : myproject
App name that serves index.html : app
├── app
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-38.pyc
│ │ ├── admin.cpython-38.pyc
│ │ ├── apps.cpython-38.pyc
│ │ ├── models.cpython-38.pyc
│ │ ├── urls.cpython-38.pyc
│ │ └── views.cpython-38.pyc
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ ├── __init__.py
│ │ └── __pycache__
│ │ └── __init__.cpython-38.pyc
│ ├── models.py
│ ├── templates
│ │ ├── 404.html
│ │ ├── assets
│ │ │ ├── css
│ │ │ │ ├── LineIcons.2.0.css
│ │ │ │ ├── animate.css
│ │ │ │ ├── bootstrap.min.css
│ │ │ │ ├── glightbox.min.css
│ │ │ │ ├── main.css
│ │ │ │ └── tiny-slider.css
│ │ │ ├── fonts
│ │ │ │ ├── LineIcons.eot
│ │ │ │ ├── LineIcons.svg
│ │ │ │ ├── LineIcons.ttf
│ │ │ │ ├── LineIcons.woff
│ │ │ │ └── LineIcons.woff2
│ │ │ ├── images
│ │ │ │ ├── favicon.svg
│ │ │ │ ├── hero
│ │ │ │ │ └── phone.png
│ │ │ │ └── logo
│ │ │ │ ├── logo.svg
│ │ │ │ └── white-logo.svg
│ │ │ ├── js
│ │ │ │ ├── bootstrap.min.js
│ │ │ │ ├── count-up.min.js
│ │ │ │ ├── glightbox.min.js
│ │ │ │ ├── main.js
│ │ │ │ ├── tiny-slider.js
│ │ │ │ └── wow.min.js
│ │ │ └── mail
│ │ │ └── mail.php
│ │ ├── index.html
│ │ └── license.txt
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── db.sqlite3
├── manage.py
└── myproject
├── __init__.py
├── __pycache__
│ ├── __init__.cpython-38.pyc
│ ├── settings.cpython-38.pyc
│ ├── urls.cpython-38.pyc
│ └── wsgi.cpython-38.pyc
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
settings.py
STATIC_ROOT = os.path.join(BASE_DIR, '/templates/assets')
STATIC_URL = 'static/'
Как мне решить эту проблему?
index.html
<link rel="shortcut icon" type="image/x-icon" href="assets/images/favicon.svg" />
<!-- ========================= CSS here ========================= -->
<link rel="stylesheet" href="assets/css/bootstrap.min.css" />
<link rel="stylesheet" href="assets/css/LineIcons.2.0.css" />
<link rel="stylesheet" href="assets/css/animate.css" />
<link rel="stylesheet" href="assets/css/tiny-slider.css" />
<link rel="stylesheet" href="assets/css/glightbox.min.css" />
<link rel="stylesheet" href="assets/css/main.css" />
setting.py
STATICFILES_DIRS = [
BASE_DIR / "static",
'/var/www/static/',
]
Добавьте этот код в файл settings.py, как показано ниже. После добавления попробуйте обновить страницу с помощью сочетания клавиш crt+shift+r. У меня такая же проблема, я добавил вышеуказанный код и обновил страницу с помощью сочетания клавиш boom. У меня сработало
{% load static %}
<link rel="shortcut icon" type="image/x-icon" href="{% static 'assets/images/favicon.svg' %}" />
<!-- ========================= CSS here ========================= -->
<link rel="stylesheet" href="{% static 'assets/css/bootstrap.min.css' %}" />
<link rel="stylesheet" href="{% static 'assets/css/LineIcons.2.0.css' %}" />
<link rel="stylesheet" href="{% static 'assets/css/animate.css' %}" />
<link rel="stylesheet" href="{% static 'assets/css/tiny-slider.css' %}" />
<link rel="stylesheet" href="{% static 'assets/css/glightbox.min.css' %}" />
<link rel="stylesheet" href="{% static 'assets/css/main.css' %}" />
Если вы хотите использовать статические файлы, напишите "{% load static %}" и {% static 'path' %}
{% load static %} ищет статические файлы под STATIC_ROOT, статические папки внутри каждого приложения и STATIC_FILESDIR, который мы указали в setting.py.
В соответствии с традициями Django, для каждого приложения должна быть отдельная папка app внутри папки static. Это делается для того, чтобы предотвратить любой конфликт, который может произойти, когда мы запускаем команду collectstatic между одноименными файлами, находящимися в STATIC_FILESDIR.
Также STATIC_ROOT - это путь, где мы храним все наши статические активы после выполнения команды collectstatic.
Поэтому я бы посоветовал вам добавить путь к директории assets в STATIC_FILESDIR или создать папку внутри каждого приложения с именем static и переместить туда все ваши статические активы, потому что по умолчанию fjnago ищет статические файлы во всех местах, определенных в STATICFILES_DIRS и в 'static' директории приложений, указанных в настройке INSTALLED_APPS.