То, как вы используете staticfiles
, немного неверно.Хотя я не могу точно сказать, что является причиной вашей текущей ситуации, я могу сказать, что ваш метод вызовет у вас головную боль в будущем.Но обо всем по порядку, я согласен с комментариями о просмотре трафика ваших запросов в терминале сервера DjangoИщите ответы 4xx и убедитесь, что запрошенный URL-адрес правильный.Это: /Static/css/photologue/css
содержит две ошибки.
Если вы не хотите читать дальше, удалите строку urls.py static.server и посмотрите на серверный терминал.Теперь, вот как все это работает ...
Вы правильно установили переменные настроек, но можете неправильно понять цель STATIC_ROOT .STATIC_URL - это полный или относительный URL для ваших статических файлов.STATIC_ROOT - это папка, в которой будут храниться все статические файлы. Он должен быть пустым .Джанго отвечает за его заполнение с помощью команды manage.py collectstatic
.Идея состоит в том, что каждое приложение в вашем проекте Django имеет свою собственную папку static / с необходимыми активами js / css / image.Кроме того, Django будет собирать статические ресурсы для Admin и любых других сторонних пакетов, которые вы используете.Все эти ресурсы будут организованы в вашу папку STATIC_ROOT.Не безопасно предполагать, что файлы, которые у вас есть до их сбора, останутся.
STATIC_ROOT = '/path/to/empty/static/folder/' # or something dynamic with os.path methods
STATIC_URL = '/static/'
В вашем случае, возможно, в вашем приложении для спокойствия установлено serenity/static/css/serenity.css
, а в фотологе - photologue/static/css/photologue.css
.Вы можете поместить общие ресурсы в папку base/static/
.
Теперь для правильного обслуживания статического носителя .Не используйте строку 'django.views.static.serve'
в urls.py
.runserver
Django будет автоматически обслуживать статические файлы .За кулисами он обрабатывает коллективное поведение, собирает все ваши статические активы и подает их.Использование такого типа шаблона URL в Django 1.3 не является необходимым, источником путаницы и того, что по ошибке пойдет в производство.Помните, что ваш веб-сервер (Apache / Nginx) обслуживает статические ресурсы.Ваши файлы Django urls.py не должны ничего знать о них.
Ссылка на статический URL в шаблонах .У вас есть /static/
в ваших шаблонах.Это будет работать (но только потому, что STATIC_URL это то же значение).Чтобы быть более гибким в этом, у вас есть три варианта .
- Использование
href="{{ STATIC_URL }}css/photologue.css"
.Эта переменная будет в ваших шаблонах до тех пор, пока вы включите 'django.core.context_processors.static' в ваш TEMPLATE_CONTEXT_PROCESSORS. - Используйте тег тега:
{% load static %} ... href="{% get_static_prefix %}css/photologue.css"
- В Django 1.4 вы сможете использовать
{% load static from staticfiles %}... href="{% static 'css/photologue.css' %}"
Стоит прочитать статические файлы в Django и быть в курсе изменений, которые появятся в Django 1.4