Django не обновляет настройки статического местоположения

У меня есть проект, который работает нормально уже около 6 месяцев. Статические файлы работали отлично, и все отлично. У меня есть мой static файлы, расположенные в папке как так:

/var/www/html/static/

В моем settings.py файл, у меня есть статический раздел настройки так:

STATICFILES_DIRS = (
     os.path.join(BASE_DIR, "static"),
     '/var/www/html/static/',
     )

Это работало просто отлично.

Тем не менее, теперь я хочу переместить static папку в другое место. В частности, я хочу переместить его в основной каталог проекта. Мой проект находится по адресу /var/www/html/shq/ так что я хочу, чтобы мой static каталог, расположенный в /var/www/html/shq/static/, Я переместил папку, затем обновил свой settings.py файл выглядит так:

STATICFILES_DIRS = (
     os.path.join(BASE_DIR, "static"),
     '/var/www/html/shq/static/',
     )

Однако это не сработало. Проект Django все еще ссылается на старое местоположение.

Что мне здесь не хватает? Почему проект Django не использует новое местоположение /var/www/html/shq/static/?

РЕДАКТИРОВАТЬ

Это то, что хвост моего settings.py файл выглядит так:

119 STATICFILES_FINDERS = [
120   'django.contrib.staticfiles.finders.FileSystemFinder',
121   'django.contrib.staticfiles.finders.AppDirectoriesFinder',
122 ]
123
124 STATIC_URL = '/static/'
125 STATIC_ROOT = '/var/www/html/collected_static/'
126 MEDIA_URL = '/media/'
127 MEDIA_ROOT = '/var/www/html/shq/media/'
128 STATICFILES_DIRS = [
129     os.path.join(BASE_DIR, "static"),
130     '/var/www/html/shq/static/',
131     ]

2 ответа

Вы можете попробовать сделать что-то вроде этого. Я думаю, что он возвращает список каталогов, которые django ищет для поиска статических файлов. Может помочь отладка.

from django.contrib.staticfiles import finders
from pprint import pprint
pprint(finders.find("", all=True))

Кроме того, возможно, я не совсем понимаю ваш сценарий, но вы можете подтвердить, что STATIC_ROOT настроен на место, где вы хотите обслуживать ваши статические файлы (где ваш веб-сервер будет обслуживать файлы). Параметр STATIC_DIRS сообщает collectstatic, где искать статические файлы, но STATIC_ROOT - это место, где collectstatic будет фактически размещать файлы.

Я понял. Не удивительно, что это было легко исправить, как только я понял это.

Это не имело никакого отношения к моим настройкам Django и всему, что связано с Apache.

оригинал

Alias /static/ /var/www/html/static/

Так что независимо от того, что я сделал в моем Django settings.py файл, Apache переопределил, чтобы отправить /static/ запрашивается не в том каталоге.

Новая настройка Apache

Alias /static/ /var/www/html/shq/static/

Теперь ссылки на правильные статические файлы. Надеюсь, это поможет кому-то еще в будущем:)

Другие вопросы по тегам