Меню

Django не работает css

Почему Django-CMS не видит пользовательские CSS/JS?

Django-CMS отказывается видеть статические файлы в каталоге static проекта. Те что создаются вручную — просто не находит. А те что установливались вместе с django и django-cms по прежнему берутся из ../env/lib/python3.6/site-packages/cms/static/cms/
collectstatic сделал.
settings.py

  • Вопрос задан более двух лет назад
  • 498 просмотров

1. Попробуй точно указать путь BASE_DIR. У меня сделано так:

2. В urls.py попробуй сделать так:

Т.е. напрямую свяжи с переменной (мб поможет, ну у меня лично так сделано, и так рекомендуют сами разработчики джанги)

3. Проверь наличие ‘django.contrib.staticfiles’ в переменной INSTALLED_APPS в settings.py

4. Так же проверь наличие переменной

5. Ну и самое главное, не забудь импортировать статику в шаблон)

Так же на это может повлиять веб-сервер, для того что бы это понять, попробуй загрузить статику на своем пк, если получится — надо настраивать веб-сервер.

Если не получится отпиши, будем дальше думать)

Проверил всё вышеперечисленное. Не помогло.
Довел urls.py до вот такого состояния:

print(settings.STATIC_ROOT) выдает путь к нужной мне папке (/home/. /blog/static
)
print(urlpatterns) — вот такое: [.*)$’>, .*)$’>] (вроде все ок)

И все равно: 127.0.0.1:8000/static/css/style.css — 404 (файл лежит в /home/. /dcms/blog/static/css/)
А 127.0.0.1:8000/static/cms/css/3.6.0/cms.base.css — ок (этот лежит в /home/. /dcms/env/lib/python3.6/site-packages/cms/static/cms/css/3.6.0/cms.base.css)

Это может быть связано с тем что я работаю в venv а не «на прямую»?

Shua_inc, для того что бы открывать по ссылке файлы тебе нужно прописать url для них.
Примерный код:

Или как вариант

но дебаг должен быть тру и не рекомендуется вообще так делать

Источник

Не работают CSS стили в Django

Только начал изучать Django и столкнулся с проблемой: не применяются стили CSS ни на одной из страниц (home.html и about.html).

Вот мои настройки в settings.py связанные со static.

STATIC_URL = ‘/static/’ STATICFILES_DIRS = [ os.path.join(BASE_DIR, ‘static’), ]

Вот расположение файлов:

Вот что показывает Developer tools:

1 ответ 1

В Devtools видно, что background-color переопределяется в _reboot.scss (он, кстати, нигде в приведенных листингах явно не подключен) — если вы проскроллите вниз, то увидите, что background-color из style.css зачёркнуто. Выход — вам нужно подключить ваш style.css последним, чтобы он переопределял заданные ранее свойства.

За ответ в коментах спасибо Artem Korsunov

Всё ещё ищете ответ? Посмотрите другие вопросы с метками html css python django или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.10.15.40479

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

Django: CSS Is not not working

I am still new to django and I am having problem with my CSS working.
I have followed the direction from the link: Django Static Link tutorial, on handling static files. But it is still not working.

Settings

index.html

And directory organization

Thank you so much, your help and time is much appreciated!

8 Answers 8

For Django to serve static files, you have to make sure you have a couple of settings.

STATIC_URL

This setting specifies what url should static files map to under. You have that done already.

STATICFILES_DIRS

This specifies all the folders on your system where Django should look for static files. The idea is that you might have a couple of apps within your project, and each app might require a different set of static files. So for organizational purposes, each app might contain a static directory where it will store only it’s static files. So then Django has to have a way to know where those directories are. This is what this setting is for.

STATIC_ROOT

This setting specifies where Django will copy all the static files to and not where the static files are already at. The idea is that once you leave development into production, Django can’t serve static files anymore due to issues I will not go here (it’s in the article). However for production, all static files should be in a single directory, instead of in many like specified in STATICFILES_DIRS . So this setting specifies a directory to which Django will copy all the static files from from all files within STATICFILES_DIRS by running the following command:

Читайте также:  Как настроить пульт dc1302hd

Please note this is only necessary once you go into production and also that the directory specified here cannot be the same as any directory specified in STATICFILES_DIRS .

Urls.py

In development for Django to serve your static files, you have to include the static urls in your urls.py:

Once you will complete all of the above things, your static files should be served as long as you have DEBUG = True . Out of the list above, you seem to only complete STATIC_URL . Also please note that all the steps I described above are in the docs you linked in your question (link). It might be a bit confusing in the beginning but if you read it a couple of times, it becomes clearer.

Источник

Django не работает css

Здравствуйте! Помогите, пожалуйста, 3 часа уже парюсь.

Изучаю Django (1.8.5, Python 3.4.3 — на Windows 7). Использую встроенный в django Web сервер для разработки. Захожу в админку (http://127.0.0.1:8000/admin/) — страница отображается без CSS.

Сейчас в settings.py у меня прописано:

Все варианты из инструкции по работе со статическими файлами я также перепробовал (STATICFILES_DIRS, STATIC_ROOT, STATICFILES_FINDERS, collectstatic). Ничего не помогает.

Смотрел в FireFox + FireBug. CSS файлы (base.css и login.css) с сервера загружаются — 2-а GET успешно отправляются, и сервер возвращает эти файлы. Но при просмотре содержимого файлов в FireBug отображается пустое содержимое.

В чём дело? Подскажите, пожалуйста.

А вы случайно не создавали в проекте папку admin?

А вы случайно не создавали в проекте папку admin?

Нет, папку admin в проекте не создавал. Создал лишь одно новое приложение с именем page. Таким образом, в проекте есть только папка page.

Вообще странно, облазил весь инет, такая проблема встречается, но лишь на реальных веб-серверах (apache, nginx). Почти у всех она успешно решается с помощью добавления инструкций в settings.py касательно статических файлов. Такое ощущение, что на встроенном в django локальном web-сервере у всех всё работает без проблем с дефолтовыми настройками.

Я учусь по достаточно свежей книге Дронова (Django: практика создания Web-сайтов на Python), так в ней автор тоже ничего не пишет о каких-то дополнительных настройках. Вероятно, всё должно сходу работать без проблем. Странно, похоже какой-то уникальный косяк именно у меня.

Да, DEBUG = True. На всякий случай ниже пишу все настройки settings.py

Добрый день. Решили проблему?

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

К сожалению, так и не решил.

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

Неоднократно перечитал и всё перепробовал, но ничего не получается. В settings.py добавил:

В urls.py добавил:

В корневой папке проекта лежит папка static со всеми статическими файлами для админки. Файлы сгенерированы с помощью утилиты collectstatic. В ней подпапка admin, в которой подпапки с содержимым для css, js, img. Но css при отображении страницы не применяются. Прикол в том, что они вроде бы грузятся. Отладочный сервер выводит инфу, что css admin/css/base.css загружен (200), но почему-то эти файлы либо не применяются либо оказываются пустыми. Перепробовал различные виды комбинаций настроек (включая те, что закомментированы). Ничего не помогает. Пробовал смотреть в разных браузерах — везде одно то же.

Вообще при DEBUG=True ничего не нужно в urls.py добавлять. Просто добавить в INSTALLED_APPS django.contrib.staticfiles . И статику собирать не нужно. Её собирают, чтобы раздавать на сервере.

Вообще при DEBUG=True ничего не нужно в urls.py добавлять. Просто добавить в INSTALLED_APPS django.contrib.staticfiles. И статику собирать не нужно. Её собирают, чтобы раздавать на сервере.

Действительно, в доке написано, что не нужно. Просто у меня не работают CSS при открытии страницы /admin/ в любых вариантах настроек. Поэтому и пробую уже всё, что угодно. В INSTALLED_APPS django.contrib.staticfiles есть, но в моём случае этого оказывается недостаточно. Интересно, кто-нибудь реально пробовал под windows отладочный сервер запустить и чтобы у него css для /admin/ подгружались? Может у меня просто какой-то оригинальный специфичный косяк, не связанный с django? Если такие есть — откликнитесь, пожалуйста.

Читайте также:  Телевизор сони настроить сеть

Добрый день. Решили проблему?

Я запускал девсервер на винде 7, django 1.9 и python 3.4. Вам не нужно делать collectstatic, поэтому папки эти можете удалить. collectstatic нужен для сбора статики для боевого сервера. А у вас вообще странная ситуация, потому что все должно работать. Попробуйте сделать следующее. Укажите в настройках setings.py следующее:

Вот именно, что все должно работать. Проблема, мне кажется, в том как отдается статика.

Нет, не решил. Пробовал тоже и с новыми версиями (python 3.5.1 , django 1.9.6) — не работает. CSS файлы передаются (видно в FireBug), но почему-то не применяются.

Я запускал девсервер на винде 7, django 1.9 и python 3.4. Вам не нужно делать collectstatic, поэтому папки эти можете удалить. collectstatic нужен для сбора статики для боевого сервера. А у вас вообще странная ситуация, потому что все должно работать.

Попробуйте сделать следующее. Укажите в настройках setings.py следующее:

А почему путь такой — ‘прямой/путь/до/джанго/static’? В каталоге django нет папки static. Впрочем я попробовал разные варианты, включая такой такой путь . Также попробовал обновить версии Python (теперь 3.5.1) и django (теперь 1.9.6). Всё равно не работает. А вы когда на Windows 7 пробовали, Вы использовали 32-х разрядную версию инсталлятора Python или 64-х разрядную? Я использую 64-х. Это единственное, что я ещё не пробовал сделать.

Зачем убивать время на переустановку python и django? Что на них грешить-то? Практичней потратить это время на прочтение документации пока не осенит в чем дело.

Нет, не решил. Пробовал тоже и с новыми версиями (python 3.5.1 , django 1.9.6) — не работает. CSS файлы передаются (видно в FireBug), но почему-то не применяются.

Тут уж точно python и django не при чем. Они свою работу сделали. Шаблон отрендерен, CSS подгружен.

Под виндой можно геморой получать, а не питон изучать. Ставьте виртуалку с линуксом (убунтой) и будет вам счастье. Вся документация написана под юникс окружение.

Зачем убивать время на переустановку python и django? Что на них грешить-то? Практичней потратить это время на прочтение документации пока не осенит в чем дело.

Да, вроде, уже всё перечитал и перепробовал, поэтому это уже не катит. А переустановил, т.к. vadiq написал, что у него вся эта кухня работала с django 1.9. Кроме vadiq никто пока здесь не писал, что у него без проблем работал отладочный сервер под Win с css, поэтому я и решил на всякий случай синхронизировать версию django с ним.

Да, вроде, уже всё перечитал и перепробовал, поэтому это уже не катит.

Вот самый дельный совет, в этом случае, от urslan если хотите получить результат без геммороя —

Ставьте виртуалку с линуксом (убунтой) и будет вам счастье.

Тут и все сказано, что в основном все под NIX ами сидят.

Кроме vadiq никто пока здесь не писал, что у него без проблем работал отладочный сервер под Win с css

А почему путь такой — ‘прямой/путь/до/джанго/static’? Я примерно указал, папка static находится как раз в site-packages/django/contrib/admin/static Но это как я понимаю не помогло.

А вы когда на Windows 7 пробовали, Вы использовали 32-х разрядную версию инсталлятора Python или 64-х разрядную? Тоже 64 разрядную. Проблема не в этом. В каком каталоге у Вас находится проект, т.е. сайт??

Смотрел в FireFox + FireBug. CSS файлы (base.css и login.css) с сервера загружаются — 2-а GET успешно отправляются, и сервер возвращает эти файлы. Но при просмотре содержимого файлов в FireBug отображается пустое содержимое. А Вы откройте эти файлы, вдруг они действительно пустые. Маловероятно, но возможно. Потому что у вас все должно работать.

Попробуйде в urls.py внести изменения: Измените url(r’^admin/’, include(admin.site.urls)), на

если нужно выше добавьте

должно решить проблему.

Попробуйде в urls.py внести изменения:

Измените url(r’^admin/’, include(admin.site.urls)),

если нужно выше добавьте

from django.contrib import admin

Читайте также:  У меня сони иксперия наушник не работает

должно решить проблему.

После обновления django до 1.9.6 в urls.py у меня именно это и есть. В старой версии (1.8) было c include. Каталог с проектом был на рабочем столе, но для проверки я создал рабочий каталог с именем «zzz» в корне диска C. Результат тот же самый. Файлы base.css и login.css проверил, они не пустые. Дело в том что FireBug на вкладке сеть показывает два успешных запроса GET — для base.css и для login.css. При этом там же можно посмотреть содержимое ответа запроса (например, для base.css) — там именно то содержимое, которое лежит в файле C:\Users\Serg\Envs\djangostudy\Lib\site-packages\django\contrib\admin\static\admin\css\base.css. При этом, меняя содержимое файла на диске, я могу видеть, что содержимое ответа запроса GET тоже меняется. Но когда я в том же Firebug щёлкаю вкладку CSS, я вижу там два файла — base.css и login.css — щёлкаю по этим файлам — там пусто. Этот косяк у меня во всех браузерах и только с админкой django сайта. Ранее я такого не встречал. На всякий случай ещё раз публикую текущие варианты settings.py и urls.py (хотя я пробовал уже огромное количество других вариантов):

вставьте это вместо

Не факт, что решит проблему. Но я подозреваю, что у вас стили не доходят до html шаблона. т.е. в get запросе получаем инфу, а на самой странице она уже не отображается. Может проблема в базовом шаблоне админки? Нужно ковыряться и искать.

Если уже не помогает ничего, и вы именно на винде хотите мучаться, то уже попробуйте вручную организовать раздачу статики на дев-сервере при помощи django.contrib.staticfiles.views.serve(). Это альтернатива django.contrib.staticfiles. А вообще, рекомендую на линукс перейти. Там в разы удобнее и проще работать с django.

А в логах джанго что пишется?

Так в порядке бреда. Не через nginx тестовый сервер запросы принимает?

Поковырялся в очередной раз. Выяснил точную причину проблемы, но пока не знаю как эту проблему устранить. Вот причина: CSS — файлы (base.css и login.css) успешно приходят в браузер с сервера, но браузеры при отображении страницы используют не полученные css файлы, а свои системные (html.css и др.). Причину такого поведения браузеров мне помогли выяснить инструменты разработчика в Chrome (до этого я использовал только FireBug в FireFox). Они выдали предупреждение, которое FireBug не выдаёт. Скриншот предупреждения ниже:

Причина в том, что в HTTP заголовке ответа сервера в поле Content-Type указано «text/plain». Скриншот ниже: А должно быть указано «text/css». Ниже скриншот примера с обычного сайта: Т.е. теперь решение проблемы сводится к тому, чтобы правильно выставить Content-type в заголовке ответа для CSS. Кто-нибудь в курсе, как это можно сделать?

А что у вас в шаблоне страницы написано?

Вот вам для примера.

А что у вас в шаблоне страницы написано?

В шаблоне base.html админки написано всё как надо. Я это проверил. FireFox это подтверждает (скриншот итогового html в FireBug ниже:)

Вся проблема в том, что браузер игнорирует, то что написано в html, а руководствуется именно типом Content-type в HTTP-заголовке ответа с сервера, который не соответствует его ожиданием. Вероятно, такая реакция прописана в стандарте, т.к. это делают все браузеры.

В порядке бреда (но часто достает в Винде) кодировка файлов СSS отличается от UTF8?

В порядке бреда (но часто достает в Винде) кодировка файлов СSS отличается от UTF8?

Нет, как я понимаю, в отличие от html для CSS файлов кодировка не указывается, т.к. она не играет значения. В css используются только ASCII символы, а они в любой кодировке имеют одинаковые значения. Моя проблема в интернете уже не раз обсуждалась, но правильного решения почти никто не предлагал. Нашёл одного человека на одном форуме, который для себя эту проблему решил. Вот чего он написал:

В моей версии django уже всё поменялось, поэтому это решение уже не актуально, тем более, что оно весьма корявое. Я предполагаю, что это, возможно, косяк какой-то библиотеки в составе Python под Windows нежели косяк django. В документации по django 1.9 в разделе, посвящённому static файлам, есть такой текст:

Источник

Adblock
detector