CSS stati c файл не загружается в Django - PullRequest
0 голосов
/ 10 января 2020

Я учусь Django, и я попытался реализовать приложение для блога. Я получаю сообщение об ошибке при использовании файлов stati c внутри проекта. Я знаю, что есть много вопросов с таким же названием. Но я пытался всеми способами, все еще не рендеринг файла css в браузере.

folder structure

Структура папки:

firstBlog - название проекта. blog - это приложение внутри firstBlog. allstaticfiles - это местоположение STATIC_ ROOT. stati c - папка для воспроизведения содержимого stati c. шаблоны для хранения шаблонов соответствующих приложений.

Вот некоторые из моих кодов:

settings.py

STATIC_URL = '/static_files/'

STATICFILES_DIRS = [
     os.path.join(BASE_DIR, "static"),
     '/Django/projects/project1/project1/firstBlog/static',
]
#print(os.path.exists(os.path.join(BASE_DIR,'static'))) ----------------TRUE

STATIC_ROOT=os.path.join(BASE_DIR, "allstaticfiles")

База. html

я использовал {% load stati c%} , а для загрузки css я установил атрибут href, как показано ниже.

<link rel="stylesheet" type="text/css" href="{% static 'blog/main.css' % }">

Несколько вещей, которые следует учитывать:

  1. , когда я просматриваю свою страницу в браузере, это дает мне ошибку на консоли, что, вероятно, связано с некоторой проблемой пути.

127.0.0.1/:1 Отказался от применения стиля из 'http://127.0.0.1: 8000 / blog /% 7B %% 20static% 20 ' blog / main. css '% 20 %% 20% 7D' потому что его тип MIME ('text / html') не является поддерживаемым типом MIME таблицы стилей, и включена строгая проверка MIME.

Когда я просматриваю стиль по ссылке localhost, например, http://127.0.0.1: 8000 / blog / static_files / blog / main. css, работает.

когда я проверяю источник просмотра страницы и затем нажимаю на ссылку href, он не загружает файл css. page source

Структура папок: C: \ Users \ tedd \ OneDrive \ Django \ projects \ project1 \ project1 \ firstBlog \ stati c

1 Ответ

0 голосов
/ 10 января 2020

Я постараюсь помочь, но я не эксперт!

Причина, по которой http://127.0.0.1:8000/blog/static_files/blog/main.css работает, заключается в том, что вы обращаетесь к основному файлу. css напрямую. Я бы предположил, что ваш <link rel="stylesheet" type="text/css" href="{% static 'blog/main.css' % }"> не указывает на правильный каталог.

Я посмотрел документацию и кажется, что структура вашей папки сформирована неправильно. Вот шаблон для того, как все должно быть структурировано:

[projectname]/                  <- project root
├── [projectname]/              <- Django root
│   ├── __init__.py
│   ├── settings/
│   │   ├── common.py
│   │   ├── development.py
│   │   ├── i18n.py
│   │   ├── __init__.py
│   │   └── production.py
│   ├── urls.py
│   └── wsgi.py
├── apps/
│   └── __init__.py
├── configs/
│   ├── apache2_vhost.sample
│   └── README
├── doc/
│   ├── Makefile
│   └── source/
│       └── *snap*
├── manage.py
├── README.rst
├── run/
│   ├── media/
│   │   └── README
│   ├── README
│   └── static/
│       └── README
├── static/
│   └── README
└── templates/
    ├── base.html
    ├── core
    │   └── login.html
    └── README

На предоставленном вами скриншоте выглядит, как будто ваша папка шаблонов находится внутри django root вместо проекта root. Это важно, потому что он будет искать ваш. css в неправильном месте.

Я рекомендую вам исправить каталоги, а затем вместо href="{% static 'blog/main.css' % }"> просто использовать href="css/style.css".

Обратите внимание, что это css / style. css вместо style. css. В вашей папке шаблонов вы можете создать папку с именем css и затем сохранить в ней все файлы. css. Затем вы можете просто указать на папку css с помощью href = "css / style. css".

Это должно работать как временное решение, пока кто-то более знающий не сможет дать вам правильный ответ.

РЕДАКТИРОВАТЬ: Ваша база. html также должны быть в папке с шаблонами! Итак: project_root / templates (вставить базу. html здесь) / css / (вставить вашу. css здесь (

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...