Django на хостинге не видит static файлы
я запускаю сервер разработки Django ( runserver ) на моем локальном компьютере (Mac OS X) и не может загрузить файлы CSS.
вот соответствующие записи в settings.py:
в моем views.py я запрашиваю контекст:
и в моем шаблоне > отображается правильно:
где на самом деле находится. Я тоже побежал!--7--> чтобы убедиться, что все файлы были собраны.
у меня также есть следующие строки в моем urls.py:
Я новичок в Django, поэтому, вероятно, пропустил что-то простое-был бы признателен за любую помощь.
и django.contrib.staticfiles в своем INSTALLED_APPS на settings.py ?
и DEBUG=False ? Если это так, вам нужно позвонить runserver С
С Django 1.11.х+, вы должны настроить статические файлы в settings.py as,
и использовать его со статическим тегом шаблона,
еще одна простая вещь, чтобы попытаться остановить, а затем перезагрузить сервер, например
Я просмотрел другие ответы, но перезапуск сервера работал для меня.
эти отсутствуют в вашем settings.py ? Я вставляю один из параметров моего проекта:
кроме того, это то, что у меня есть в моем urls.py :
я использую Django 1.10.
- создать папку static на том же уровне settings.py мой settings.py 's путь это ~/djcode/mysite/mysite/settings.py , так это dir ~/djcode/mysite/mysite/static/ ;
- создать две папки static_dirs и static_root на static , это ~/djcode/mysite/mysite/static/static_dirs/ и ~/djcode/mysite/mysite/static/static_root/ ;
написать settings.py такой:
сделать эта команда $ python manage.py collectstatic в Shell;
создать папку css на static_dirs и положить в свой собственный .css файл, ваш файл css' путь ~/djcode/mysite/mysite/static/static_dirs/css/my_style.css ;
и удалены STATIC_ROOT С settings.py , это сработало для меня
добавить следующий код settings.py :
после этого создайте статическую папку в корневом каталоге вашего проекта.
для загрузки статических файлов по шаблонам используйте:
добавить "django.core.context_processors.static", контекстный процессор в вашем settings.py
У вас был тот же путь в STATICFILES_DIRS и STATIC_ROOT, я столкнулся с той же проблемой, и ниже было исключение -
неправильно сконфигурировано: параметр STATICFILES_DIRS не должен содержать параметр STATIC_ROOT
для local вам не нужны STATICFILES_DIRS, так как в любом случае вам не нужно запускать collectstatic. Как только вы прокомментируете его, он должен работать нормально.
вы добавили в свои шаблоны:
это загружает то, что нужно, но по какой-то причине я испытал, что иногда работает без этого. .
DEBUG = True в моих локальных настройках сделал это за меня.
посмотрите, включено ли ваше основное приложение (где находится статический каталог) в ваш INSTALLED_APPS.
поиск файлов осуществляется с помощью включенных искателей. По умолчанию необходимо искать во всех местоположениях, определенных в STATICFILES_DIRS и в "статическом" каталоге приложений, указанном параметром INSTALLED_APPS.
мне пришлось использовать
это помогло мне.
я попробовал эту модель, и она сработала.
изменения в настройках в соответствии с проектом django, созданным с помощью shell
изменить папку, как показано ниже структура загрузки наших статических файлов для запуска на сервере
Столкнулся с чудесным в Django 3.2 . Не отображается статика из некоторых каталогах внутри static в dev-режиме. Почти во всех, кроме /static/admin/ . Ничего не понимаю. В settings.py все как обычно, одинаково с другими проектами, в которых все работает:
В url.py тоже как и в других проектах:
Когда делаешь python manage.py collectstatic вся статика, как и положено, собирается в каталог static/admin и любой из этих файлов можно посмотреть. Типа: 127.0.0.1:8000/static/admin/css/base.css. но никаких файлы из других файлов не показываются. С ошибкой 404. И не важно, включён и присвоено что-то STATICFILES_DIRS в settings.py или нет. И есть или нет строчка urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) в url.py. И, что особенно странно, если какой-либо файл положить в папку static/admin или там static/admin/js -- этот файл тоже НЕ ОТОБРАЖАЕТСЯ. Видит только файлы которые притащил python manage.py collectstatic . Что за магия такая?
- Вопрос задан более года назад
- 1024 просмотра
Честно, не cовсем понял код, но:
settings.py
отлично работает. Статика в папке static_files, в дебаге collectstatic не делаю, т.к. нет нужды, делаю только на проде.
Методом тыка выяснил, что почему-то в Django 3.2 не работает STATIC_ROOT . При этом в документации ничего про эти изменения нет.
У меня так, почему-то не работает :(( Работает только так:
И если что-то присвоить STATIC_ROOT -- статику отдавать перестаёт. Сам в шоке. Проект на 3.2 разворачивал с нуля, без миграций.
На соседнем проекте на 3.1.8 -- все со STATIC_ROOT нормально и работает как и раньше.
Методом тыка выяснил, что почему-то в Django 3.2 не работает STATIC_ROOT . При этом в документации ничего про эти изменения нет. В общем, заработало так:
В url.py ничего про каталог static не пишем вообще:
В общем странно, похоже они в Django 3.2 отказались от STATIC_ROOT в пользу более гибкого STATICFILES_DIRS . Почему в документации про это не написано -- ещё страннее. И совсем странно, что если оставить присвоение STATIC_ROOT -- все ломается.
А вот применение MEDIA_ROOT оставили без изменений, работает как прежде, и даже запись в url.py для него обязательна.
I've seen several posts for this issue but didn't found my solution.
I'm trying to serve static files within my Django 1.3 development environment.
Here are my settings
My /home/glide/Documents/django/cbox/static/ directory is like
Do I have to specify patterns for css, javascript and images individually ?
One tip people might find helpful - Django will not serve static content (i.e. CSS changes) when Debug is False
STATIC_ROOT
15 Answers 15
I confused STATIC_ROOT and STATICFILES_DIRS
Actually I was not really understanding the utility of STATIC_ROOT. I thought that it was the directory on which I have to put my common files. This directory is used for the production, this is the directory on which static files will be put (collected) by collectstatic.
STATICFILES_DIRS is the one that I need.
Since I'm in a development environment, the solution for me is to not use STATIC_ROOT (or to specify another path) and set my common files directory in STATICFILES_DIRS:
Also don't forget to from django.conf import settings
No the urls.py should be like in the question (same thing for media) and don't forget to from django.conf import settings of course
I just want to add to this answer, don't miss the s. it should be STATICFILES_DIRS. I did STATICFILE_DIRS, made me crazy for 45 minutes looking for the error.
There could be only two things in settings.py which causes problems for you.
1) STATIC_URL = '/static/'
and your static files should lie under static directory which is in same directory as project's settings file.
Even then if your static files are not loading then reason is , you might have kept
change it to True (strictly for development only). In production just change STATICFILES_DIRS to whatever path where static files resides.
Serving static files can be achieved in several ways; here are my notes to self:
- add a static/my_app/ directory to my_app (see the note about namespacing below)
- define a new top level directory and add that to STATICFILES_DIRS in settings.py (note that The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting )
I prefer the first way, and a setup that's close to the way defined in the documentation, so in order to serve the file admin-custom.css to override a couple of admin styles, I have a setup like so:
Good code is its own best documentation. As you’re about to add a comment, ask yourself, ‘How can I improve the code so that this comment isn’t needed?’
-
/ /
- Сервер не видит файлы статики. Прошу помощи. Мучусь 3 день
Здравствуйте. Изучаю Django. Вернее пытаюсь, так как поднять по-человечески сервер на локальном компьютере с Ubuntu не получается.
Скомпоновал для себя инструкцию из нескольких. Основную часть взял с Djbook.
Но остается у меня проблема: сервер после начальной настройки (и команды ./manage.py collectstatic ) не видит статические файлы. Даже на странице входа в админку (localhost:8000/admin)не отображаются стили. Я уже не говорю про статические файлы в папке "static" приложений.
Очень прошу помощи. Мучусь 3 день. Ресурс моего SSD скоро закончится от переустановок OS.
так в nginx конфиге пропиши путь просто
Так прописан вроде (пункт 6 в моей инструкции):
root на alias попробуйте поменять.
Или /static/ в конце пути сотрите.
root на alias попробуйте поменять.
Или /static/ в конце пути сотрите.
Пробовал раньше уже эти варианты. Попробовал сейчас еще раз. А после изменения кода нужно писать какие-то команды перезагрузки чего-то? Например, nginx?
Хотя я на всякий случай все равно перезагрузил, но НЕ ПОМОГАЕТ.
Потом сделайте collectstatic и перезапустите django и nginx.
И ещё. У nginx есть доступ в /home/admin1 ?
location /static/
root /home/admin1/myenv/myproject;
expires 30d;
>
STATIC_ROOT = '/home/admin1/myenv/myproject/static'
Потом сделайте collectstatic и перезапустите django и nginx.
И ещё. У nginx есть доступ в /home/admin1 ?
1)По фрагменту кода я понял, что строку STATIC_ROOT = '/home/admin1/myenv/myproject/static' нужно было попробовать добавить в файл настроек Nginx?
Добавил так, как Вы указали. Nginx с этой строкой в файле не захотел перезагружаться. Выдал ошибку.
2)А как проверить, есть ли у Nginx права? Я знаю, как смотреть просто права на папку.
Вот последняя строка из "access_log":
Последняя строка из "error_log":
Разумеется нет, это же джанговский параметр. В настройках обновите.
Хм, по идее, x должно быть достаточно. Покажите ещё права на вложенные каталоги, по порядку.
А, ну правильно. Вам в /home/admin1/myenv/myproject/static/static/admin/css/login.css ничего лишнего в глаза не бросается? Сдаётся мне, что вы так и оставили свой кривой вариант
Бли-и-и-и-ин. Нашел. В настройках Nginx нужно было указать не:
В логе ошибок уведел, что не по тому адресу обращается.
Пока что заработало. Самое интересное, что в инструкции на Djbook в первом посте правильно написано, а внизу есть "обновление", где указано лишнее "static", из-за чего и получилась ошибка.
Большое спасибо за помощь. Надеюсь, проблема решилась.
Самое интересное, что в инструкции на Djbook в первом посте правильно написано, а внизу есть "обновление", где указано лишнее "static", из-за чего и получилась ошибка.
Это где такое? Прямую ссылку дайте, исправим.
Это где такое? Прямую ссылку дайте, исправим.
В этом посте прямо жирным выделено "static".
root на alias попробуйте поменять.
Или /static/ в конце пути сотрите.
А ведь сразу этот вариант предложили. Наверное я второе и не попробовал сделать.
Там alias , так что всё правильно. Алиас указывает на папку напрямую, а рут указывает на родителя.
Мой вам большой совет. Когда что-то идёт не так, не надо кидаться гуглить море инструкций, чего-то там шаманить, менять по 20 раз. Надо отдохнуть, взять себя в руки и, если во время отдыха не родилась здравая мысль, последовать совету в подписи RaD-а. Читать всю документацию от корки до корки не обязательно, но изучить то, что вы уже добавили в конфиг, стоит точно. Знаю, этому совету, сложно следовать (частенько сам не могу себя заставить это сделать), но попробовать стоит :)
Там alias, так что всё правильно. Алиас указывает на папку напрямую, а рут указывает на родителя.
Тогда я вдвойне осёл.
Просто делал все "методом тыка" и не понимал, в какой ситуации ждать изменений.
Просто делал все "методом тыка" и не понимал, в какой ситуации ждать изменений.
См. мой предыдущий пост, я там кое-что добавил :)
См. мой предыдущий пост, я там кое-что добавил :)
У меня сложно с английским. Обычно это указываю. В этот раз забыл.
И самое обидное, что я сталкивался с инструкциями, где было указано "alias" и я пробовал менять, но не знал, что действие наступает именно после ручной перезагрузки "Nginx".
Я пытаюсь обслуживать статические файлы в моей среде разработки Django 1.3.
вот мои настройки
мой / главная / glide / документы / django/cbox / static/ как
должен ли я указывать шаблоны для css, javascript и изображений индивидуально ?
Я запутался STATIC_ROOT и STATICFILES_DIRS
на самом деле я не понимал полезности STATIC_ROOT. Я думал, что это каталог, в который я должен поместить свои общие файлы. Этот каталог используется для производства, это каталог, в который будут помещены (собраны) статические файлы collectstatic.
STATICFILES_DIRS Я необходимость.
поскольку я нахожусь в среде разработки, решение для меня не использовать STATIC_ROOT (или указать другой путь) и общей папке файлы STATICFILES_DIRS:
Не забудьте from django.conf import settings
обслуживание статических файлов может быть достигнуто несколькими способами; вот мои заметки для себя:
- добавить до my_app (см. Примечание о пространстве имен ниже)
- определите новый каталог верхнего уровня и добавьте его в STATICFILES_DIRS в settings.py (обратите внимание, что The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting )
Я предпочитаю первый способ и настройку, которая близка к пути определена в документации, так что для того, чтобы служить файл admin-custom.css в переопределите пару стилей администратора, у меня есть такая настройка:
это затем используется в шаблоне так:
при развертывании, я бегу collectstatic и обслуживать статические файлы с nginx.
документы, которые прояснили всю путаницу для меня:
STATICFILES_DIRS
там может быть только две вещи в settings.py файл те делает ваши статические файлы служить.
1) STATIC_URL = ' / static/'
2) STATICFILES_DIRS = ( ОС.путь.join (BASE_DIR, " static"), )
и ваши статические файлы должны находиться в статическом каталоге, который находится в том же каталоге, что и файл настроек проекта.
даже тогда, если ваши статические файлы не загружаются, причина в том, что вы могли бы сохранить
измените его на True (только для разработки). В производстве просто измените STATICFILES_DIRS на любой путь, где находятся статические файлы.
еще одна ошибка может не иметь вашего приложения, указанного в INSTALLED_APPS о компании:
не имея его, вы можете столкнуться с такими проблемами, как не обнаружение статических файлов, в основном все файлы, связанные с вашим приложением. Даже если это может быть правильно, как предложено в правильном ответе, используя:
может быть одной из ошибок и должны быть рассмотрены, если получение этой ошибки.
статическое пространство имен файлов
Читайте также: