django отказывается распознавать статическую папку?

ОБНОВЛЕНИЕ - он правильно читает статическую папку. Если я создам файл test.css, а затем попытаюсь перейти к http://myserver:8000/static/css/test.css, он его подхватит.

Проблема в том, что я пытаюсь поместить в эту папку новый bootstrap.css. Он игнорирует, что у меня есть пользовательский, и вместо этого использует тот, который находится в папке python2.7/dist/mezzanine/.... Шаблоны не имеют этой проблемы, когда я их собирал. base.html является пользовательским, и он использует мою, а не сохраненную копию по умолчанию, так почему же он не делает этого со статическими файлами?

Я пробовал много разных примеров stackoverflow и google, но кажется, что мое приложение django/mezzanine не хочет распознавать статические файлы, которые я использую.

Мои статические файлы находятся в '/opt/myproject/static/'

settings.py

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_URL = "/static/"
STATIC_ROOT = os.path.join(PROJECT_ROOT, STATIC_URL.strip("/"))
STATIC_DIRS = (os.path.join(PROJECT_ROOT, "static"),)

Отмечу, что даже хардкодирование пути не помогает -

STATIC_ROOT = "/opt/myproject/static/"
STATIC_DIRS = ("/opt/myproject/static",)

Base.html — это Mezzanine по умолчанию, поэтому вот как он ищет статические файлы:

<link rel="stylesheet" href="{% static "css/bootstrap.css" %}">

Если я жестко закодирую местоположение в CSS, он не найдет файл -

<link rel="stylesheet" href="/opt/myproject/static/css/bootstrap.css">

Я в недоумении, почему он не получает статические файлы нигде, кроме домашней папки мезонина. Если я делаю findstatic, он никогда не находит мою папку только по умолчанию -

python manage.py findstatic css/bootstrap.css
Found 'css/bootstrap.css' here:
  /usr/local/lib/python2.7/dist-packages/mezzanine/core/static/css/bootstrap.css

Что я делаю не так?

отредактируйте, чтобы включить, что у меня есть DEBUG = True

Я сделал трюк urls.py -

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns += staticfiles_urlpatterns()

Я также сделал python manage.py runserver --unsecure


person whoisearth    schedule 30.07.2014    source источник
comment
попробуйте STATIC_DIRS = (os.path.join(PROJECT_ROOT, "static/"),) и STATIC_ROOT = os.path.join(PROJECT_ROOT, "static/") обратите внимание на косую черту   -  person Ben    schedule 30.07.2014
comment
Понятия не имею, как это возможно. Попробуйте временно удалить mezzanine/core/static/css/bootstrap.css и посмотрите, вернется ли он к вашему пользовательскому.   -  person Ben    schedule 30.07.2014
comment
@ Бен - Это так странно. Я переименовал его в bootstrap.old, и да, тогда он подбирает мой пользовательский bootstrap.css в статической папке моих проектов. и становится страннее. Если я переименую его обратно, он сохранит мой пользовательский css. что-то где-то кешируется и не выпускается, это все, о чем я могу думать.   -  person whoisearth    schedule 31.07.2014
comment
странно .. попробуйте запустить новый проект в какой-то момент, посмотрите, есть ли у него те же симптомы. Это, или проконсультируйтесь с доской для спиритических сеансов, я думаю.   -  person Ben    schedule 31.07.2014


Ответы (1)


Запустите ./manage.py collectstatic, это должно подтянуть все ваши новые статические файлы. Это также скажет вам, правильно ли установлены ваши STATIC_ROOT и STATIC_URL.

person Abhinav Nair    schedule 30.07.2014
comment
collectstatic работает нормально и копирует все файлы, но по-прежнему не распознает мои измененные файлы. - person whoisearth; 31.07.2014
comment
Вы развертываете свой проект в производственной среде или это просто разработка? - person Abhinav Nair; 31.07.2014
comment
обновить здесь, что проблема была не в производстве. У меня есть одна производственная среда с использованием mod_wsgi, и статические файлы верны. среда разработки, это проблема, настолько эффективная, что я не могу тестировать в разработке... - person whoisearth; 02.09.2014