Моя папка static, в которой я размещаю свои js и css файлы, находится не в корне моего проекта django. Как вызвать эти статические файлы в шаблоне?
Вот конфигурация моей переменной static_root:
STATIC_ROOT = [os.path.join(BASE_DIR,'vol/web/static')]
Мои шаблоны находятся в корне проекта.
TEMPLATES={
...
'DIRS':[os.path.join(BASE_DIR, 'templates')],
...
}
Вот как я вызываю свой файл bootstrap.min.css в шаблоне проекта:
<link rel="stylesheet" href="{% static 'assets/plugins/bootstrap/css/bootstrap.min.css' %}">
Но это не работает, потому что файл не загружается. Как правильно это сделать?
Внутри main urls.py
from django.conf import settings as SETTINGS
from django.conf.urls.static import static
urlpatterns += static(SETTINGS.STATIC_URL, document_root=SETTINGS.STATIC_ROOT)
urlpatterns += static(SETTINGS.MEDIA_URL, document_root=SETTINGS.MEDIA_ROOT)
settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'
STATIC_URL = '/static/'
STATICFILES_DIRS = (BASE_DIR / 'static',)
STATIC_ROOT = (BASE_DIR / 'static'/ 'static')
- Если вы храните свои js и css файлы в какой-то папке, то вам нужно указать эту папку в
STATICFILES_DIRS
настройках django. Например:
STATICFILES_DIRS = [
"/home/my-user/my-project/static",
]
Тогда Django будет искать эту директорию(ии) при поиске файлов, указанных в теге {% static ... %}
.
https://docs.djangoproject.com/en/4.0/ref/settings/#staticfiles-dirs
- Если Django все еще не может найти определенный файл, попробуйте использовать команду управления
findstatic
для диагностики. Это покажет, в каких директориях django действительно ищет файл. Например:
python manage.py findstatic -v3 assets/plugins/bootstrap/css/bootstrap.min.css
https://docs.djangoproject.com/en/4.0/ref/contrib/staticfiles/#findstatic