django не будет загружать статические файлы из statifiles_dirs - PullRequest
0 голосов
/ 19 сентября 2018

Мой style.css помещен в appname/static/appname/.

Мой settings.py имеет этот код:

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static/"),
    )

И в моем base.html я загружаю его так:

{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'appname/style.css' %}">

Но стили не загружаются.Если я удаляю STATICFILES_DIRS и меняю STATIC_URL = '/static/' на STATIC_URL = '/static/appname/', он работает отлично, но я полагаю, что это не лучшая практика для случая, когда я добавлю любое другое приложение в проект позже.Что я могу делать не так?

Ответы [ 3 ]

0 голосов
/ 19 сентября 2018

Просто измените одну вещь,

STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)

Он будет искать в статической папке внутри вашего приложения.Также, если вы хотите добавить конкретный каталог,

STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"), '/your specific directory/',
)

Отсюда вы можете напрямую добавить конкретное имя файла, и djnago будет искать в этом конкретном каталоге.

0 голосов
/ 19 сентября 2018

По умолчанию django выбирает каталог static из каталога приложения.Таким образом, если ваш статический каталог находится внутри каталога приложения, нет необходимости указывать STATICFILES_DIRS.Теперь /static/ будет указывать на файлы и каталоги в статическом каталоге вашего приложения.Для ссылки на ваш файл CSS используйте

{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'appname/style.css' %}">
0 голосов
/ 19 сентября 2018

Удалите «appname» в {% static 'appname / style.css'%}, вы не должны помещать его туда, потому что python автоматически знает, в каком приложении находится файл, он получает имя приложения из запроса

...