Как заставить Django найти статический файл CSS - PullRequest
0 голосов
/ 03 ноября 2019

Я схожу с ума от моего текущего проекта Django и его статических файлов. Я пробовал разные решения на SO
(например, Django не может найти мои статические файлы и Django Static Files CSS ) и даже мои собственные рабочие из других моих проектов ..

Я просто хочу связать базовый файл css, расположенный в моей папке projects / static /, с моим файлом base.html, который будет содержать базовую панель навигации для всех сайтов / приложений в проекте. Вот почему я решил разместить его в каталоге проектов централизованно. Однако, каким-то образом он не найдет файл.

Это моя установка, где

  • отладка установлена ​​на True (разработка пока не производится))

settings.py:

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

base.html:

{% load static %}
[...]
            {% block head_css_site %}
              <link href="{% static 'base.css' %}" rel="stylesheet" type="text/css">
            {% endblock head_css_site %}
[...]

структура проекта:

enter image description here

ошибка:

GET http://127.0.0.1:8000/static/base.css net::ERR_ABORTED 404 (Not Found)

Ответы [ 4 ]

2 голосов
/ 03 ноября 2019

Проблема в ваших шаблонах. Как видите, выполняемый запрос не включает статический префикс, который указывает, что STATIC_URL не определен. И, на самом деле, {% load static %}, который вы указываете в верхней части шаблона, не определяет (и не может) определять эту переменную. делает , что дает вам доступ к тегу шаблона static, который вы используете следующим образом:

<link href="{% static 'base.css' %}"...>

Редактировать

Кроме того, ваша статическая папка, кажется, находится в вашей директории "dashex", а не в базовой директории. Поэтому вы должны либо переместить его, либо изменить настройку:

STATICFILES_DIRS = (os.path.join('dashex/static'), )
0 голосов
/ 04 ноября 2019

Убедитесь, что STATIC_ROOT добавлен и не пуст в файле settings.py, его режим отладки не включен, django не будет собирать статические файлы автоматически, поэтому вам нужно запустить команду из предыдущего поста или настроить nginx / Apache для его обслуживания.

0 голосов
/ 03 ноября 2019

Вы должны попытаться указать путь к статическим файлам в urls.py следующим образом:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

проверить документы здесь Обслуживание статических файлов во время разработки

0 голосов
/ 03 ноября 2019

Вы можете выполнить это:

    python manage.py collectstatic 

в проекте, root, чтобы заставить его собирать статические файлы

или установить debug = True или выполнить:

./manate.py runserver --insecure
...